0025219: Visualization, TKOpenGl - disable code paths unavailable on OpenGL ES 2.0
[occt.git] / src / OpenGl / OpenGl_PointSprite.cxx
CommitLineData
a577aaab 1// Created by: Kirill GAVRILOV
d5f74e42 2// Copyright (c) 2013-2014 OPEN CASCADE SAS
a577aaab 3//
973c2be1 4// This file is part of Open CASCADE Technology software library.
a577aaab 5//
d5f74e42 6// This library is free software; you can redistribute it and/or modify it under
7// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 8// by the Free Software Foundation, with special exception defined in the file
9// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10// distribution for complete text of the license and disclaimer of any warranty.
a577aaab 11//
973c2be1 12// Alternatively, this file may be used under the terms of Open CASCADE
13// commercial license or contractual agreement.
a577aaab 14
15#include <OpenGl_PointSprite.hxx>
16
17#include <Graphic3d_TextureParams.hxx>
18#include <OpenGl_Context.hxx>
19#include <Standard_Assert.hxx>
20#include <Image_PixMap.hxx>
21
22IMPLEMENT_STANDARD_HANDLE (OpenGl_PointSprite, OpenGl_Texture)
23IMPLEMENT_STANDARD_RTTIEXT(OpenGl_PointSprite, OpenGl_Texture)
24
25// =======================================================================
26// function : OpenGl_PointSprite
27// purpose :
28// =======================================================================
29OpenGl_PointSprite::OpenGl_PointSprite()
30: OpenGl_Texture (NULL),
31 myBitmapList (0)
32{
33 //myParams->SetFilter (Graphic3d_TOTF_NEAREST);
34 myParams->SetGenMode (Graphic3d_TOTM_SPRITE,
35 Graphic3d_Vec4 (0.0f, 0.0f, 0.0f, 0.0f),
36 Graphic3d_Vec4 (0.0f, 0.0f, 0.0f, 0.0f));
37}
38
39// =======================================================================
40// function : ~OpenGl_PointSprite
41// purpose :
42// =======================================================================
43OpenGl_PointSprite::~OpenGl_PointSprite()
44{
45 Release (NULL);
46}
47
48// =======================================================================
49// function : Release
50// purpose :
51// =======================================================================
10b9c7df 52void OpenGl_PointSprite::Release (OpenGl_Context* theGlCtx)
a577aaab 53{
54 if (myBitmapList != 0)
55 {
ea095e0e 56 Standard_ASSERT_RETURN (theGlCtx != NULL,
57 "OpenGl_PointSprite destroyed without GL context! Possible GPU memory leakage...",);
58
fd4a6963 59 if (theGlCtx->IsValid())
60 {
ca3c13d1 61 #if !defined(GL_ES_VERSION_2_0)
fd4a6963 62 glDeleteLists (myBitmapList, 1);
ca3c13d1 63 #endif
fd4a6963 64 }
a577aaab 65 myBitmapList = 0;
66 }
67
68 OpenGl_Texture::Release (theGlCtx);
69}
70
71// =======================================================================
72// function : SetDisplayList
73// purpose :
74// =======================================================================
75void OpenGl_PointSprite::SetDisplayList (const Handle(OpenGl_Context)& theCtx,
76 const GLuint theBitmapList)
77{
78 Release (theCtx.operator->());
79 myBitmapList = theBitmapList;
80}
81
82
83// =======================================================================
84// function : DrawBitmap
85// purpose :
86// =======================================================================
87void OpenGl_PointSprite::DrawBitmap (const Handle(OpenGl_Context)& ) const
88{
89 if (myBitmapList != 0)
90 {
ca3c13d1 91 #if !defined(GL_ES_VERSION_2_0)
a577aaab 92 glCallList (myBitmapList);
ca3c13d1 93 #endif
a577aaab 94 }
95}