void DrawGlyphTex() { g_pDevice->BeginRendering(true, true, true); ZFXMatrix mWorld; mWorld.Identity(); g_pDevice->SetWorldTransform(&mWorld); Font *pFont = g_pDevice->GetFontManager()->GetFont(g_fontID); UINT nSkinID = pFont->GetSkinID(33); g_pDevice->SetTextureStage(0, RS_TEX_ADDSIGNED); g_pDevice->GetSkinManager()->ActiveSkin(nSkinID); glBindVertexArray(g_vao); glBindBuffer(GL_ARRAY_BUFFER, g_vertex); glVertexPointer(2, GL_FLOAT, 4 * sizeof(GLfloat), 0); glTexCoordPointer(2, GL_FLOAT, 4 * sizeof(GLfloat), (void*)(2 * sizeof(float))); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glDrawArrays(GL_TRIANGLES, 0, 6); GLenum error = glGetError(); if (error != GL_NO_ERROR) { int i = 0; } g_pDevice->EndRendering(); }
void DrawTriangle(IShaderManager* sm) { g_pDevice->BeginRendering(true, true, true); ZFXMatrix mWorld; mWorld.Identity(); g_pDevice->SetWorldTransform(&mWorld); GLuint vao; glGenVertexArrays(1, &vao); glBindVertexArray(vao); GLfloat vertexs[6][5] = { { -0.9, -0.9, 0.0, 0.0f, 0.5f }, { 0.85, -0.9, 0.0, 0.5f, 0.0f }, { -0.9, 0.85, 0.5, 0.0f, 0.0f }, { 0.9, -0.85, 0.0, 0.0f, 0.5f }, { 0.9, 0.9, 0.0, 0.0f, 0.5f }, { -0.85, 0.9, 0.0, 0.0f, 0.5f }, }; GLuint vbo; glGenBuffers(1, &vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo); glBufferData(GL_ARRAY_BUFFER, sizeof(vertexs), vertexs, GL_STATIC_DRAW); glVertexPointer(2, GL_FLOAT, sizeof(float) * 45, 0); glColorPointer(3, GL_FLOAT, 5 * sizeof(float), (void*)(2 * sizeof(float))); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), BUFFER_OFFSET(0)); glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), BUFFER_OFFSET(2 * sizeof(float))); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); sm->EnableShader(false); glDrawArrays(GL_TRIANGLES, 0, 6); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); GLenum error = glGetError(); if (error != GL_NO_ERROR) { int i = 0; } g_pDevice->EndRendering(); }
void DrawString(const char* str) { IShaderManager* sm = g_pDevice->GetShaderManager(); sm->EnableShader(false); g_pDevice->BeginRendering(true, true, true); ZFXMatrix mWorld; mWorld.Identity(); g_pDevice->SetWorldTransform(&mWorld); g_pDevice->DrawText(g_fontID, 0, 0, 0xffff0000, str); g_pDevice->EndRendering(); }
void DrawS3DModel() { g_pDevice->BeginRendering(true, true, true); ZFXMatrix mWorld; mWorld.Identity(); /*mWorld.Identity(); mWorld.Translate(-2.0f, 1.0f, 13.0f); g_pDevice->SetWorldTransform(&mWorld); hr = g_pMarder->Render(true, false); mWorld.Translate(-1.0f, -5.0f, 15.0f); g_pDevice->SetWorldTransform(&mWorld); hr = g_pLeopard2->Render(true, false); */ mWorld.Translate(0.5, 0.5, 0); g_pDevice->SetWorldTransform(&mWorld); g_pG3->Render(true, false); g_pLeopard2->Render(true, false); g_pMarder->Render(true, false); g_pDevice->EndRendering(); }
/** * Do one frame. */ HRESULT ProgramTick(void) { HRESULT hr = ZFX_FAIL; ZFXMatrix mWorld; mWorld.Identity(); static float fT = 0.0f; static float fA = 0.0f; // this is just fancy fadein/fadeout eyecandy //////// if (fT <= 1.0f) { fA = fT; fT += 0.01f; } else if (fT <= 2.0f) { fA = 1 - (fT - 1); fT += 0.01f; } else fT = 0.0f; // end of fancy fadein/fadeout eyecandy ////////////// // set first viewport (whole window) g_pDevice->SetMode(EMD_PERSPECTIVE, 0); IShaderManager* sm = g_pDevice->GetShaderManager(); if (g_vshader) sm->BindShader(g_vshader); if (g_fshader) sm->BindShader(g_fshader); if(g_vshader || g_fshader) sm->EnableShader(true); GLfloat f[16] = { 0.0 }; glGetFloatv(GL_MODELVIEW_MATRIX, f); glGetFloatv(GL_PROJECTION_MATRIX, f); g_pDevice->SetClearColor(0.7f, 0.7f, 1.0f); // clear buffers and start scene g_pDevice->BeginRendering(true, true, true); mWorld.Translate(-1.0f, 1.0f, 3.0f); g_pDevice->SetWorldTransform(&mWorld); hr = g_pMarder->Render(true, false); mWorld.Translate(-1.0f, -5.0f, 2.0f); g_pDevice->SetWorldTransform(&mWorld); hr = g_pLeopard2->Render(true, false); mWorld.Identity(); //mWorld.Translate(1.1f, -0.6f, 1.0f); g_pDevice->SetWorldTransform(&mWorld); hr = g_pG3->Render(true, false); g_pDevice->FadeScreen(0.0f, 0.0f, 0.0f, fA); // render into second viewport g_pDevice->SetMode(EMD_PERSPECTIVE, 1); if (g_vshader || g_fshader) sm->EnableShader(true); glGetFloatv(GL_MODELVIEW_MATRIX, f); glGetFloatv(GL_PROJECTION_MATRIX, f); g_pDevice->SetClearColor(1.0f, 0.2f, 0.2f); g_pDevice->Clear(true, true, true); mWorld.Translate(-2.0f, 1.0f, 3.0f); g_pDevice->SetWorldTransform(&mWorld); g_pMarder->Render(true, true); mWorld.Translate(-1.0f, -5.0f, 2.0f); g_pDevice->SetWorldTransform(&mWorld); g_pLeopard2->Render(true, true); mWorld.Translate(1.1f, -0.6f, 1.0f); g_pDevice->SetWorldTransform(&mWorld); g_pG3->Render(true, true); g_pDevice->FadeScreen(0.0f, 0.0f, 0.0f, 1.0f - fA); g_pDevice->SetMode(EMD_PERSPECTIVE, 0); /*if (g_pDevice->IsWindowed()) g_pDevice->DrawText(g_nFontID, 10, 10, 255, 255, 0, "ZFXEngine 2.0"); else { g_pDevice->GetResolution(&pt); g_pDevice->DrawText(g_nFontID, 10, 10, 255, 255, 0, "Screen: (%d,%d)", pt.x, pt.y); } */ // flip backbuffer to front g_pDevice->EndRendering(); return hr; } // Tick
void DrawLightExam() { // compute camera g_pos.y = distance * sin(yAngle); g_pos.x = distance * cos(yAngle) * sin(-xAngle); g_pos.z = distance * cos(yAngle) * cos(-xAngle); g_lightPos.y = LightDistantce * sin(yLightAngle); g_lightPos.x = LightDistantce * cos(yLightAngle) * sin(-xLightAngle); g_lightPos.z = LightDistantce * cos(yLightAngle) * cos(-xLightAngle); light.vcPosition = g_lightPos; light.vcDirection = -g_lightPos; light.vcDirection.w = 0; light.fPhi = g_cutoff; light.fExponent = g_exponent; g_pDevice->UseWindow(0); ZFXVector vU(0, 1, 0); g_pDevice->SetViewLookAt(g_pos, ZFXVector(0, 0, 0), vU); IShaderManager *sm = g_pDevice->GetShaderManager(); sm->SetNamedConstant("camera_position", DAT_FVEC4, 1, g_pos.v); GLfloat f[16] = { 0.0 }; glGetFloatv(GL_MODELVIEW_MATRIX, f); glGetFloatv(GL_PROJECTION_MATRIX, f); ZFXMatrix mWorld; mWorld.Identity(); g_pDevice->SetWorldTransform(&mWorld); //sm->EnableShader(false); g_pDevice->SetAmbientLight(0.1, 0.1, 0.1); g_pDevice->SetLight(&light, 0); float v[4]; glGetMaterialfv(GL_FRONT, GL_AMBIENT, v); glGetMaterialfv(GL_FRONT, GL_DIFFUSE, v); glGetMaterialfv(GL_FRONT, GL_SPECULAR, v); glGetMaterialfv(GL_FRONT, GL_EMISSION, v); DrawOBJModel(); GLenum error = glGetError(); if (error != GL_NO_ERROR) { int i = 0; } glGetMaterialfv(GL_FRONT, GL_AMBIENT, v); glGetMaterialfv(GL_FRONT, GL_DIFFUSE, v); glGetMaterialfv(GL_FRONT, GL_SPECULAR, v); glGetMaterialfv(GL_FRONT, GL_EMISSION, v); glGetLightfv(GL_LIGHT0, GL_AMBIENT, v); glGetLightfv(GL_LIGHT0, GL_DIFFUSE, v); glGetLightfv(GL_LIGHT0, GL_SPECULAR, v); error = glGetError(); if (error != GL_NO_ERROR) { int i = 0; } }