Differential D152 Diff 3818 source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
Changeset View
Changeset View
Standalone View
Standalone View
source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
| Show First 20 Lines • Show All 188 Lines • ▼ Show 20 Lines | bool RAS_OpenGLRasterizer::Init() | ||||
| glShadeModel(GL_SMOOTH); | glShadeModel(GL_SMOOTH); | ||||
| storage_init = m_storage->Init(); | storage_init = m_storage->Init(); | ||||
| return true && storage_init; | return true && storage_init; | ||||
| } | } | ||||
| void RAS_OpenGLRasterizer::SetAmbientColor(float red, float green, float blue) | void RAS_OpenGLRasterizer::SetAmbientColor(float color[3]) | ||||
| { | { | ||||
| m_ambr = red; | m_ambr = color[0]; | ||||
| m_ambg = green; | m_ambg = color[1]; | ||||
| m_ambb = blue; | m_ambb = color[2]; | ||||
| } | } | ||||
| void RAS_OpenGLRasterizer::SetAmbient(float factor) | void RAS_OpenGLRasterizer::SetAmbient(float factor) | ||||
| { | { | ||||
| float ambient[] = { m_ambr*factor, m_ambg*factor, m_ambb*factor, 1.0f }; | float ambient[] = {m_ambr * factor, m_ambg * factor, m_ambb * factor, 1.0f}; | ||||
| glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); | glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient); | ||||
| } | } | ||||
| void RAS_OpenGLRasterizer::SetBackColor(float color[3]) | |||||
| void RAS_OpenGLRasterizer::SetBackColor(float red, | |||||
| float green, | |||||
| float blue, | |||||
| float alpha) | |||||
| { | |||||
| m_redback = red; | |||||
| m_greenback = green; | |||||
| m_blueback = blue; | |||||
| m_alphaback = alpha; | |||||
| } | |||||
| void RAS_OpenGLRasterizer::SetFogColor(float r, | |||||
| float g, | |||||
| float b) | |||||
| { | |||||
| m_fogr = r; | |||||
| m_fogg = g; | |||||
| m_fogb = b; | |||||
| } | |||||
| void RAS_OpenGLRasterizer::SetFogStart(float start) | |||||
| { | { | ||||
| m_fogstart = start; | m_redback = color[0]; | ||||
| m_greenback = color[1]; | |||||
| m_blueback = color[2]; | |||||
| m_alphaback = 1.0f; | |||||
| } | } | ||||
| void RAS_OpenGLRasterizer::SetFog(short type, float start, float dist, float intensity, float color[3]) | |||||
| void RAS_OpenGLRasterizer::SetFogEnd(float fogend) | |||||
| { | { | ||||
moguri: Are these being called for GLSL mode too? Does GLSL mode use fixed function fog? If not, we… | |||||
Not Done Inline ActionsYes text objects has no material and without the text will not display with fog. hg1: Yes text objects has no material and without the text will not display with fog.
If sometime… | |||||
| m_fogdist = fogend; | float params[4] = {color[0], color[1], color[2], 1.0f}; | ||||
| } | glFogi(GL_FOG_MODE, GL_LINEAR); | ||||
| glFogf(GL_FOG_DENSITY, intensity / 10.0f); | |||||
| glFogf(GL_FOG_START, start); | |||||
| glFogf(GL_FOG_END, start + dist); | |||||
| void RAS_OpenGLRasterizer::SetFog(short type, | glFogfv(GL_FOG_COLOR, params); | ||||
| float start, | |||||
| float dist, | |||||
| float intensity, | |||||
| float r, | |||||
| float g, | |||||
| float b) | |||||
| { | |||||
| m_fogtype = type; | |||||
| m_fogstart = start; | |||||
| m_fogdist = dist; | |||||
| m_fogintensity = intensity; | |||||
| m_fogr = r; | |||||
| m_fogg = g; | |||||
| m_fogb = b; | |||||
| } | } | ||||
| void RAS_OpenGLRasterizer::EnableFog(bool enable) | void RAS_OpenGLRasterizer::EnableFog(bool enable) | ||||
| { | { | ||||
| m_fogenabled = enable; | m_fogenabled = enable; | ||||
| } | } | ||||
| bool RAS_OpenGLRasterizer::IsFogEnabled() | |||||
| { | |||||
| return m_fogenabled; | |||||
| } | |||||
| void RAS_OpenGLRasterizer::DisplayFog() | void RAS_OpenGLRasterizer::DisplayFog() | ||||
| { | { | ||||
| if ((m_drawingmode >= KX_SOLID) && m_fogenabled) | if ((m_drawingmode >= KX_SOLID) && m_fogenabled) { | ||||
| { | |||||
| float params[4] = {m_fogr, m_fogg, m_fogb, 1.0f}; | |||||
| glFogi(GL_FOG_MODE, GL_LINEAR); | |||||
| glFogf(GL_FOG_DENSITY, m_fogintensity / 10.0f); | |||||
| glFogf(GL_FOG_START, m_fogstart); | |||||
| glFogf(GL_FOG_END, m_fogstart + m_fogdist); | |||||
| glFogfv(GL_FOG_COLOR, params); | |||||
| glEnable(GL_FOG); | glEnable(GL_FOG); | ||||
| } | } | ||||
| else | else { | ||||
| { | |||||
| glDisable(GL_FOG); | glDisable(GL_FOG); | ||||
| } | } | ||||
| } | } | ||||
| bool RAS_OpenGLRasterizer::SetMaterial(const RAS_IPolyMaterial& mat) | bool RAS_OpenGLRasterizer::SetMaterial(const RAS_IPolyMaterial& mat) | ||||
| { | { | ||||
| return mat.Activate(this, m_materialCachingInfo); | return mat.Activate(this, m_materialCachingInfo); | ||||
| } | } | ||||
| void RAS_OpenGLRasterizer::Exit() | void RAS_OpenGLRasterizer::Exit() | ||||
| ▲ Show 20 Lines • Show All 1,287 Lines • Show Last 20 Lines | |||||
Are these being called for GLSL mode too? Does GLSL mode use fixed function fog? If not, we should avoid fixed function calls that we don't need. I guess by moving them here we at least avoid calling them every frame, but can we be sure that these state variables are not being screwed up by someone?