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()
39 kstl::set<CoreModifiable*> instances;
40 CoreModifiable::GetInstancesByName(
"Window", myParentWindowName, instances);
45 if (!parentwindow->IsInit())
47 KIGS_ERROR(
"A rendering screen needs a parent window", 1);
52 parentwindow->getValue(
"SizeX", sizeX);
53 parentwindow->getValue(
"SizeY", sizeY);
55 mySizeX = (
unsigned int)sizeX;
56 mySizeY = (
unsigned int)sizeY;
58 myContext = globalGLContext;
68 InitializeGL(mySizeX, mySizeY);
70 renderer->InitHardwareState();
73 void OpenGLRenderingScreen::InitializeGL(
int width,
int height)
75 mySizeX = (
unsigned int)width;
76 mySizeY = (
unsigned int)height;
77 glViewport(0, 0, width, height);
87 mySizeX = (
unsigned int)sizeX;
88 mySizeY = (
unsigned int)sizeY;
93 InitializeGL(sizeX, sizeY);
97 void OpenGLRenderingScreen::Update(
const Timer& timer,
void* addParam)
102 renderer->SetClearColorValue(myBackDropColor[0], myBackDropColor[1], myBackDropColor[2], 0.0);
103 renderer->FlushState();
104 RenderingScreen::Update(timer, addParam);
118 setCurrentGLContext(myContext);
124 glBindTexture(GL_TEXTURE_2D, myBindedTexture->GetGLID());
133 if (myBindedTexture && myIsOffScreen)
135 glBindTexture(GL_TEXTURE_2D, myBindedTexture->GetGLID());
138 KIGS_ASSERT(glGetError() == GL_NO_ERROR);
141 void OpenGLRenderingScreen::BindTexture(
Texture* texture)
148 void OpenGLRenderingScreen::FetchPixels(
int x,
int y,
int width,
int height,
void *pRGBAPixels)
151 glReadPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pRGBAPixels);