void IUnitDrawerState::EnableCommon(const CUnitDrawer* ud, bool deferredPass) { PushTransform(camera); EnableTexturesCommon(); SetActiveShader(shadowHandler->ShadowsLoaded(), deferredPass); assert(modelShaders[MODEL_SHADER_ACTIVE] != nullptr); modelShaders[MODEL_SHADER_ACTIVE]->Enable(); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); }
void UnitDrawerStateFFP::Enable(const CUnitDrawer* ud, bool deferredPass, bool alphaPass) { glEnable(GL_LIGHTING); // only for the advshading=0 case glLightfv(GL_LIGHT1, GL_POSITION, sky->GetLight()->GetLightDir()); glLightfv(GL_LIGHT1, GL_AMBIENT, sunLighting->modelAmbientColor); glLightfv(GL_LIGHT1, GL_DIFFUSE, sunLighting->modelDiffuseColor); glLightfv(GL_LIGHT1, GL_SPECULAR, sunLighting->modelSpecularColor); glEnable(GL_LIGHT1); CUnitDrawer::SetupBasicS3OTexture1(); CUnitDrawer::SetupBasicS3OTexture0(); const float4 color = {1.0f, 1.0f, 1.0, mix(1.0f, ud->alphaValues.x, (1.0f * alphaPass))}; glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, &color.x); glColor4fv(&color.x); PushTransform(camera); }
void vsDisplayList::AppendOp(vsDisplayList::op * o) { OpCode type = o->type; switch( type ) { case OpCode_SetColor: SetColor( o->data.GetColor() ); break; case OpCode_SetColors: SetColors( (vsColor*)o->data.p, o->data.GetUInt() ); break; case OpCode_SetColorsBuffer: SetColorsBuffer( (vsRenderBuffer*)o->data.p ); break; case OpCode_VertexArray: VertexArray( (vsVector3D *)o->data.p, o->data.GetUInt() ); break; case OpCode_NormalArray: NormalArray( (vsVector3D *)o->data.p, o->data.GetUInt() ); break; case OpCode_TexelArray: TexelArray( (vsVector2D *)o->data.p, o->data.GetUInt() ); break; case OpCode_ColorArray: ColorArray( (vsColor *)o->data.p, o->data.GetUInt() ); break; case OpCode_VertexBuffer: VertexBuffer( (vsRenderBuffer *)o->data.p ); break; case OpCode_TexelBuffer: TexelBuffer( (vsRenderBuffer *)o->data.p ); break; case OpCode_ColorBuffer: ColorBuffer( (vsRenderBuffer *)o->data.p ); break; case OpCode_BindBuffer: BindBuffer( (vsRenderBuffer *)o->data.p ); break; case OpCode_UnbindBuffer: UnbindBuffer( (vsRenderBuffer *)o->data.p ); break; case OpCode_ClearVertexArray: ClearVertexArray(); break; case OpCode_ClearNormalArray: ClearNormalArray(); break; case OpCode_ClearTexelArray: ClearTexelArray(); break; case OpCode_ClearColorArray: ClearColorArray(); break; case OpCode_ClearArrays: ClearArrays(); break; case OpCode_LineListArray: LineListArray( (int *)o->data.p, o->data.GetUInt() ); break; case OpCode_LineStripArray: LineStripArray( (int *)o->data.p, o->data.GetUInt() ); break; case OpCode_TriangleListArray: TriangleListArray( (int *)o->data.p, o->data.GetUInt() ); break; case OpCode_TriangleStripArray: TriangleStripArray( (int *)o->data.p, o->data.GetUInt() ); break; case OpCode_PointsArray: PointsArray( (int *)o->data.p, o->data.GetUInt() ); break; case OpCode_LineListBuffer: LineListBuffer( (vsRenderBuffer *)o->data.p ); break; case OpCode_LineStripBuffer: LineStripBuffer( (vsRenderBuffer *)o->data.p ); break; case OpCode_TriangleStripBuffer: TriangleStripBuffer( (vsRenderBuffer *)o->data.p ); break; case OpCode_TriangleFanArray: TriangleFanArray( (int *)o->data.p, o->data.GetUInt() ); break; case OpCode_PushTransform: PushTransform( o->data.GetTransform() ); break; case OpCode_SetCameraTransform: SetCameraTransform( o->data.GetTransform() ); break; case OpCode_SetMatrix4x4: SetMatrix4x4( o->data.GetMatrix4x4() ); break; case OpCode_PushMatrix4x4: PushMatrix4x4( o->data.GetMatrix4x4() ); break; case OpCode_SetMatrices4x4: SetMatrices4x4( (vsMatrix4x4*)o->data.p, o->data.i ); break; case OpCode_SetMatrices4x4Buffer: SetMatrices4x4Buffer( (vsRenderBuffer*)o->data.p ); break; case OpCode_SetWorldToViewMatrix4x4: SetWorldToViewMatrix4x4( o->data.GetMatrix4x4() ); break; case OpCode_Set3DProjection: Set3DProjection( o->data.fov, o->data.nearPlane, o->data.farPlane ); break; case OpCode_SetProjectionMatrix4x4: SetProjectionMatrix4x4( o->data.GetMatrix4x4() ); break; case OpCode_PopTransform: PopTransform(); break; case OpCode_EnableStencil: EnableStencil(); break; case OpCode_DisableStencil: DisableStencil(); break; case OpCode_EnableScissor: EnableScissor( o->data.GetBox2D() ); break; case OpCode_DisableScissor: DisableScissor(); break; case OpCode_ClearStencil: ClearStencil(); break; case OpCode_SetViewport: SetViewport( o->data.GetBox2D() ); break; case OpCode_ClearViewport: ClearViewport(); break; case OpCode_Debug: Debug( o->data.GetString() ); break; default: break; } }