30 GeometryBuffer::GeometryBuffer(int32_t width, int32_t height)
119 auto contextIdx = renderer->CONTEXTINDEX_DEFAULT;
122 renderer->disableCulling(contextIdx);
127 deferredLightingRenderShader->useProgram(engine, decalEntities);
130 renderer->setTextureUnit(contextIdx, 0);
132 renderer->setTextureUnit(contextIdx, 1);
134 renderer->setTextureUnit(contextIdx, 2);
138 renderer->setTextureUnit(contextIdx, 3);
140 renderer->setTextureUnit(contextIdx, 4);
142 renderer->setTextureUnit(contextIdx, 5);
144 renderer->setTextureUnit(contextIdx, 6);
146 renderer->setTextureUnit(contextIdx, 7);
150 renderer->setTextureUnit(contextIdx, 8);
154 renderer->bindVerticesBufferObject(contextIdx, frameBufferRenderShader->getVBOVertices());
155 renderer->bindTextureCoordinatesBufferObject(contextIdx, frameBufferRenderShader->getVBOTextureCoordinates());
158 renderer->drawTrianglesFromBufferObjects(contextIdx, 2, 0);
161 renderer->unbindBufferObjects(contextIdx);
164 renderer->setTextureUnit(contextIdx, 0);
165 renderer->bindTexture(contextIdx, renderer->ID_NONE);
166 renderer->setTextureUnit(contextIdx, 1);
167 renderer->bindTexture(contextIdx, renderer->ID_NONE);
168 renderer->setTextureUnit(contextIdx, 2);
169 renderer->bindTexture(contextIdx, renderer->ID_NONE);
172 renderer->setTextureUnit(contextIdx, 3);
173 renderer->bindTexture(contextIdx, renderer->ID_NONE);
174 renderer->setTextureUnit(contextIdx, 4);
175 renderer->bindTexture(contextIdx, renderer->ID_NONE);
176 renderer->setTextureUnit(contextIdx, 5);
177 renderer->bindTexture(contextIdx, renderer->ID_NONE);
178 renderer->setTextureUnit(contextIdx, 6);
179 renderer->bindTexture(contextIdx, renderer->ID_NONE);
180 renderer->setTextureUnit(contextIdx, 7);
181 renderer->bindTexture(contextIdx, renderer->ID_NONE);
184 renderer->setTextureUnit(contextIdx, 8);
185 renderer->bindTexture(contextIdx, renderer->ID_NONE);
188 renderer->setTextureUnit(contextIdx, 0);
191 deferredLightingRenderShader->unUseProgram();
194 renderer->enableCulling(contextIdx);
Decal entity to be used with engine class.
static FrameBufferRenderShader * getFrameBufferRenderShader()
static Renderer * getRenderer()
static STATIC_DLL_IMPEXT Engine * instance
static DeferredLightingRenderShader * getDeferredLightingRenderShader()
int32_t colorBufferTextureId5
void reshape(int32_t width, int32_t height)
Resize the geometry buffer.
void initialize()
Initialize the geometry buffer.
int32_t colorBufferTextureId1
int32_t colorBufferTextureId2
int32_t colorBufferTextureId4
int32_t colorBufferTextureId3
int32_t geometryBufferTextureId3
void renderToScreen(Engine *engine, vector< Decal * > &decalEntities)
Render to screen or bound geometry buffer @engine engine.
void dispose()
Disposes this geometry buffer.
void enableGeometryBuffer()
Enables this geometry buffer to be rendered.
int32_t geometryBufferTextureId2
int32_t depthBufferTextureId
int32_t geometryBufferTextureId1
static void disableGeometryBuffer()
Switches back to non offscreen main frame buffer to be rendered.
Deferred lighint render shader.
Frame buffer render shader.
virtual void resizeDepthBufferTexture(int32_t textureId, int32_t width, int32_t height)=0
Resizes a depth texture.
virtual void setViewPort(int32_t width, int32_t height)=0
Set up viewport parameter.
virtual void updateViewPort()=0
Update viewport.
virtual int32_t createDepthBufferTexture(int32_t width, int32_t height, int32_t cubeMapTextureId, int32_t cubeMapTextureIndex)=0
Creates a depth buffer texture.
virtual int32_t createGBufferGeometryTexture(int32_t width, int32_t height)=0
Creates a geometry buffer geometry texture.
virtual void disposeTexture(int32_t textureId)=0
Dispose a texture.
virtual void resizeGBufferGeometryTexture(int32_t textureId, int32_t width, int32_t height)=0
Resizes a geometry buffer geometry texture.
virtual void bindFrameBuffer(int32_t frameBufferId)=0
Enables a framebuffer to be rendered.
virtual void disposeFrameBufferObject(int32_t frameBufferId)=0
Disposes a frame buffer object.
virtual int32_t createGBufferColorTexture(int32_t width, int32_t height)=0
Creates a geometry buffer color RGBA texture.
virtual int32_t createGeometryBufferObject(int32_t depthBufferTextureId, int32_t geometryBufferTextureId1, int32_t geometryBufferTextureId2, int32_t geometryBufferTextureId3, int32_t colorBufferTextureId1, int32_t colorBufferTextureId2, int32_t colorBufferTextureId3, int32_t colorBufferTextureId4, int32_t colorBufferTextureId5)=0
Creates a geometry frame buffer object.
virtual void resizeGBufferColorTexture(int32_t textureId, int32_t width, int32_t height)=0
Resizes a geometry buffer color RGBA texture.