4 extern void* globalGLContext;
5 extern void setCurrentGLContext(
void* context);
9 OpenGLRenderingScreen::OpenGLRenderingScreen(
const kstl::string& name, CLASS_NAME_TREE_ARG) :
RenderingScreen(name, PASS_CLASS_NAME_TREE_ARG)
16 OpenGLRenderingScreen::~OpenGLRenderingScreen()
22 if (sBuffer != 0xffffffff)
23 glDeleteBuffers(1, &sBuffer);
40 kstl::set<CoreModifiable*> instances;
41 CoreModifiable::GetInstancesByName(
"Window", myParentWindowName, instances);
46 if (!parentwindow->IsInit())
48 KIGS_ERROR(
"A rendering screen needs a parent window", 1);
53 parentwindow->getValue(
"SizeX", sizeX);
54 parentwindow->getValue(
"SizeY", sizeY);
56 mySizeX = (
unsigned int)sizeX;
57 mySizeY = (
unsigned int)sizeY;
59 myContext = globalGLContext;
69 InitializeGL(mySizeX, mySizeY);
72 void OpenGLRenderingScreen::InitializeGL(
int width,
int height)
74 mySizeX = (
unsigned int)width;
75 mySizeY = (
unsigned int)height;
76 glViewport(0, 0, width, height);
86 mySizeX = (
unsigned int)sizeX;
87 mySizeY = (
unsigned int)sizeY;
92 InitializeGL(sizeX, sizeY);
96 void OpenGLRenderingScreen::Update(
const Timer& timer,
void* addParam)
101 renderer->SetClearColorValue(myBackDropColor[0], myBackDropColor[1], myBackDropColor[2], 0.0);
102 renderer->FlushState();
103 RenderingScreen::Update(timer, addParam);
117 setCurrentGLContext(myContext);
123 glBindTexture(GL_TEXTURE_2D, myBindedTexture->GetGLID());
132 if (myBindedTexture && myIsOffScreen)
134 glBindTexture(GL_TEXTURE_2D, myBindedTexture->GetGLID());
137 KIGS_ASSERT(glGetError() == GL_NO_ERROR);
140 void OpenGLRenderingScreen::BindTexture(
Texture* texture)
147 void OpenGLRenderingScreen::FetchPixels(
int x,
int y,
int width,
int height,
void *pRGBAPixels)
150 glReadPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pRGBAPixels);