本文整理汇总了C++中GLMatrixStack::identity方法的典型用法代码示例。如果您正苦于以下问题:C++ GLMatrixStack::identity方法的具体用法?C++ GLMatrixStack::identity怎么用?C++ GLMatrixStack::identity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GLMatrixStack
的用法示例。
在下文中一共展示了GLMatrixStack::identity方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ChangeSize
/**
* Window has changed size, or has just been created. In either case, we need to use the window
* dimensions to set the viewport and the projection matrix.
*/
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
transformPipeline.setMatrixStacks(modelViewMatrix, projectionMatrix);
viewFrustum.setPerspective(35.0f, float(w) / float(h), 1.0f, 100.0f);
projectionMatrix.setMatrix(viewFrustum.GetProjectionMatrix());
modelViewMatrix.identity();
}
示例2: ChangeSize
/**
* Window has changed size, or has just been created. In either case, we need to use the window
* dimensions to set the viewport and the projection matrix.
*/
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
transformPipeline.setMatrixStacks(modelViewMatrix, projectionMatrix);
modelViewMatrix.identity();
screenWidth = w;
screenHeight = h;
GenerateOrtho2DMat(w, h, hdrTexturesWidth[curHDRTex], hdrTexturesHeight[curHDRTex]);
}
示例3: ChangeSize
/**
* Window has changed size, or has just been created. In either case, we need to use the window
* dimensions to set the viewport and the projection matrix.
*/
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
transformPipeline.setMatrixStacks(modelViewMatrix, projectionMatrix);
viewFrustum.setPerspective(35.0f, float(w) / float(h), 1.0f, 100.0f);
projectionMatrix.setMatrix(viewFrustum.GetProjectionMatrix());
modelViewMatrix.identity();
GenerateOrtho2DMat(w, h);
screenWidth = w;
screenHeight = h;
// resize texture
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, depthTextureName);
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 8, GL_DEPTH_COMPONENT24, w, h, GL_FALSE);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, msTexture[0]);
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 8, GL_RGBA8, w, h, GL_FALSE);
}
示例4: SetupRC
/**
* This function does any needed initialization on the rendering context.
* This is the first opportunity to do any OpenGL related tasks.
*/
void SetupRC()
{
GLfloat texCoordOffsets[4][5 * 5 * 2];
GLfloat exposureLUT[20] = { 11.0, 6.0, 3.2, 2.8, 2.2, 1.90, 1.80, 1.80, 1.70, 1.70, 1.60, 1.60, 1.50, 1.50, 1.40, 1.40, 1.30, 1.20, 1.10, 1.00 };
// Will not use depth buffer
glDisable(GL_DEPTH_TEST);
curHDRTex = 0;
// Init codel-view and leave it
modelViewMatrix.identity();
// Black
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
// Setup LUT texture for use with the adaptive exposure filter
glGenTextures(1, lutTxtures);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_1D, lutTxtures[1]);
glTexImage1D(GL_TEXTURE_1D, 0, GL_R16F, 20, 0, GL_RED, GL_FLOAT, exposureLUT);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
// Setup HDR texture(s)
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, hdrTextures);
glBindTexture(GL_TEXTURE_2D, hdrTextures[curHDRTex]);
// Load HDR image from EXR file
LoadOpenEXRImage("Tree.exr", hdrTextures[curHDRTex], hdrTexturesWidth[curHDRTex], hdrTexturesHeight[curHDRTex]);
// Create ortho matrix and screen-sized quad matching images aspect ratio
GenerateOrtho2DMat(screenWidth, screenHeight, hdrTexturesWidth[curHDRTex], hdrTexturesHeight[curHDRTex]);
//GenerateFBOOrtho2DMat(hdrTexturesWidth[curHDRTex], hdrTexturesHeight[curHDRTex]);
gltGenerateOrtho2DMat(hdrTexturesWidth[curHDRTex], hdrTexturesHeight[curHDRTex], fboOrthoMatrix, fboQuad);
// Setup tex coords to be used for fetching HDR kernel data
for (int k = 0; k < 4; k++) {
float xInc = 1.0f / (GLfloat)(hdrTexturesWidth[curHDRTex] >> k);
float yInc = 1.0f / (GLfloat)(hdrTexturesHeight[curHDRTex] >> k);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
texCoordOffsets[k][(((i * 5) + j) * 2) + 0] = (-1.0f * xInc) + ((GLfloat)i * xInc);
texCoordOffsets[k][(((i * 5) + j) * 2) + 1] = (-1.0f * yInc) + ((GLfloat)j * yInc);
}
}
}
// Load shaders
mapTexProg = gltLoadShaderWithFileEx("hdr.vs", "hdr_simple.fs", 2,
GLT_ATTRIBUTE_VERTEX, "vVertex", GLT_ATTRIBUTE_TEXTURE0, "vTexCoord0");
glBindFragDataLocation(mapTexProg, 0, "oColor");
glLinkProgram(mapTexProg);
varExposureProg = gltLoadShaderWithFileEx("hdr.vs", "hdr_exposure.fs", 2,
GLT_ATTRIBUTE_VERTEX, "vVertex", GLT_ATTRIBUTE_TEXTURE0, "vTexCoord0");
glBindFragDataLocation(varExposureProg, 0, "oColor");
glLinkProgram(varExposureProg);
glUseProgram(varExposureProg);
glUniform1i(glGetUniformLocation(varExposureProg, "textureUnit0"), 0);
adaptiveProg = gltLoadShaderWithFileEx("hdr.vs", "hdr_adaptive.fs", 2,
GLT_ATTRIBUTE_VERTEX, "vVertex", GLT_ATTRIBUTE_TEXTURE0, "vTexCoord0");
glBindFragDataLocation(adaptiveProg, 0, "oColor");
glLinkProgram(adaptiveProg);
glUseProgram(adaptiveProg);
glUniform1i(glGetUniformLocation(adaptiveProg, "textureUnit0"), 0);
glUniform1i(glGetUniformLocation(adaptiveProg, "textureUnit1"), 1);
glUniform2fv(glGetUniformLocation(adaptiveProg, "tc_offset"), 25, texCoordOffsets[0]);
glUseProgram(0);
// Create and bind an FBO
glGenFramebuffers(1, &fboName);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fboName);
// Create the FBO texture
glGenTextures(1, fboTextures);
glBindTexture(GL_TEXTURE_2D, fboTextures[0]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, hdrTexturesWidth[curHDRTex], hdrTexturesHeight[curHDRTex], 0, GL_RGBA, GL_FLOAT, NULL);
glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fboTextures[0], 0);
// Make sure all went well
gltCheckErrors();
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
// Set first running mode
curProg = adaptiveProg;
}
示例5: RenderScene
/**
* Called to draw scene
*/
void RenderScene(void)
{
// Bind the FBO with multisample buffers
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, msFBO);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// User selected order independant transparency
if (mode == USER_OIT)
{
// Use OIT, setup sample masks
glSampleMaski(0, 0x01);
glEnable(GL_SAMPLE_MASK);
// Prevent depth test from culling covered surfaces
glDepthFunc(GL_ALWAYS);
}
modelViewMatrix.push();
M3DMatrix44f mCamera;
cameraFrame.GetCameraMatrix(mCamera);
modelViewMatrix.MultMatrix(mCamera);
modelViewMatrix.push();
modelViewMatrix.moveTo(0.0f, -0.4f, -4.0f);
modelViewMatrix.rotateTo(worldAngle, 0.0, 1.0, 0.0);
// Draw the background and disk to the first sample
modelViewMatrix.push();
modelViewMatrix.moveTo(0.0f, 3.0f, 0.0f);
modelViewMatrix.rotateTo(90.0, 1.0, 0.0, 0.0);
modelViewMatrix.rotateTo(90.0, 0.0, 0.0, 1.0);
glBindTexture(GL_TEXTURE_2D, textures[1]);
shaderManager.useStockShader(GLT_SHADER_TEXTURE_REPLACE, transformPipeline.GetMVPMatrix(), 0);
bckgrndCylBatch.draw();
modelViewMatrix.pop();
modelViewMatrix.moveTo(0.0f, -0.3f, 0.0f);
modelViewMatrix.push();
modelViewMatrix.rotateTo(90.0, 1.0, 0.0, 0.0);
shaderManager.useStockShader(GLT_SHADER_FLAT, transformPipeline.GetMVPMatrix(), vGrey);
diskBatch.draw();
modelViewMatrix.pop();
modelViewMatrix.moveTo(0.0f, 0.1f, 0.0f);
// User selected blending
if (mode == USER_BLEND)
{
// Setup blend state
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
switch (blendMode)
{
case 1:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
break;
case 2:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_ALPHA);
break;
case 3:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
break;
case 4:
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
break;
case 5:
glBlendFunc(GL_SRC_ALPHA, GL_DST_COLOR);
break;
case 6:
glBlendFuncSeparate(GL_SRC_ALPHA, GL_DST_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
break;
case 7:
glBlendFuncSeparate(GL_SRC_COLOR, GL_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
break;
default:
glDisable(GL_BLEND);
}
}
// Now draw the glass pieces
DrawWorld();
modelViewMatrix.pop();
modelViewMatrix.pop();
// Clean up all state
glDepthFunc(GL_LEQUAL);
glDisable(GL_BLEND);
glDisable(GL_SAMPLE_MASK);
glSampleMaski(0, 0xffffffff);
// Resolve multisample buffer
projectionMatrix.push();
projectionMatrix.setMatrix(orthoMatrix);
modelViewMatrix.push();
modelViewMatrix.identity();
// Setup and Clear the default framebuffer
//.........这里部分代码省略.........