本文整理汇总了C++中CBaseGroundDrawer::GetActiveInfoTexture方法的典型用法代码示例。如果您正苦于以下问题:C++ CBaseGroundDrawer::GetActiveInfoTexture方法的具体用法?C++ CBaseGroundDrawer::GetActiveInfoTexture怎么用?C++ CBaseGroundDrawer::GetActiveInfoTexture使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBaseGroundDrawer
的用法示例。
在下文中一共展示了CBaseGroundDrawer::GetActiveInfoTexture方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Draw
void CFeatureDrawer::Draw()
{
ISky::SetupFog();
GML_RECMUTEX_LOCK(feat); // Draw
CBaseGroundDrawer* gd = readMap->GetGroundDrawer();
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE2_ARB);
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_ADD_SIGNED_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
glMultiTexCoord4f(GL_TEXTURE2_ARB, 1.0f,1.0f,1.0f,1.0f); // workaround a nvidia bug with TexGen
SetTexGen(1.0f / (gs->pwr2mapx * SQUARE_SIZE), 1.0f / (gs->pwr2mapy * SQUARE_SIZE), 0.0f, 0.0f);
glBindTexture(GL_TEXTURE_2D, gd->GetActiveInfoTexture());
glActiveTextureARB(GL_TEXTURE0_ARB);
}
unitDrawer->SetupForUnitDrawing(false);
GetVisibleFeatures(0, true);
for (int modelType = MODELTYPE_3DO; modelType < MODELTYPE_OTHER; modelType++) {
opaqueModelRenderers[modelType]->PushRenderState();
DrawOpaqueFeatures(modelType);
opaqueModelRenderers[modelType]->PopRenderState();
}
unitDrawer->CleanUpUnitDrawing(false);
farTextureHandler->Draw();
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE2_ARB);
glDisable(GL_TEXTURE_2D);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glActiveTextureARB(GL_TEXTURE0_ARB);
}
glDisable(GL_TEXTURE_2D);
glDisable(GL_FOG);
#ifdef USE_GML
DrawFeatureStats();
#endif
}
示例2: SetupGlStateFar
void CGrassDrawer::SetupGlStateFar()
{
assert(globalRendering->haveGLSL);
CBaseGroundDrawer* gd = readMap->GetGroundDrawer();
//glEnable(GL_ALPHA_TEST);
//glAlphaFunc(GL_GREATER, 0.01f);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDepthMask(GL_FALSE);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glMultMatrixf(camera->GetViewMatrix());
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
EnableShader(GRASS_PROGRAM_DIST);
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, farTex);
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetGrassShadingTexture());
glActiveTextureARB(GL_TEXTURE2_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetShadingTexture());
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE3_ARB);
glBindTexture(GL_TEXTURE_2D, gd->GetActiveInfoTexture());
}
if (shadowHandler->shadowsLoaded) {
glActiveTextureARB(GL_TEXTURE4_ARB);
glBindTexture(GL_TEXTURE_2D, shadowHandler->shadowTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE_ARB, GL_ALPHA);
}
glActiveTextureARB(GL_TEXTURE0_ARB);
}
示例3: SetupGlStateFar
void CGrassDrawer::SetupGlStateFar()
{
assert(globalRendering->haveGLSL);
CBaseGroundDrawer* gd = readMap->GetGroundDrawer();
const float3 windSpeed =
wind.GetCurrentDirection() *
wind.GetCurrentStrength() *
mapInfo->grass.bladeWaveScale;
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.01f);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDepthMask(GL_FALSE);
if (shadowHandler->shadowsLoaded) {
grassShader = grassShaders[GRASS_PROGRAM_DIST_SHADOW];
grassShader->SetFlag("HAVE_INFOTEX", gd->DrawExtraTex());
grassShader->Enable();
grassShader->SetUniformMatrix4fv(6, false, &shadowHandler->shadowMatrix.m[0]);
grassShader->SetUniform4fv(7, shadowHandler->GetShadowParams());
grassShader->SetUniform1f(8, gs->frameNum);
grassShader->SetUniform3fv(9, &windSpeed.x);
grassShader->SetUniform3fv(10, &camera->GetPos().x);
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetShadingTexture());
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, shadowHandler->shadowTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE_ARB, GL_ALPHA);
static const float texConstant[] = {
mapInfo->light.groundAmbientColor.x * 1.24f,
mapInfo->light.groundAmbientColor.y * 1.24f,
mapInfo->light.groundAmbientColor.z * 1.24f,
1.0f
};
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, texConstant);
glActiveTextureARB(GL_TEXTURE2_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetGrassShadingTexture());
glActiveTextureARB(GL_TEXTURE3_ARB);
glBindTexture(GL_TEXTURE_2D, farTex);
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE4_ARB);
glBindTexture(GL_TEXTURE_2D, gd->GetActiveInfoTexture());
}
glActiveTextureARB(GL_TEXTURE0_ARB);
} else {
grassShader = grassShaders[GRASS_PROGRAM_DIST_BASIC];
grassShader->Enable();
grassShader->SetUniform1f(8, gs->frameNum);
grassShader->SetUniform3fv(9, &windSpeed.x);
grassShader->SetUniform3fv(10, &camera->GetPos().x);
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetShadingTexture());
//glActiveTextureARB(GL_TEXTURE1_ARB);
glActiveTextureARB(GL_TEXTURE2_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetGrassShadingTexture());
glActiveTextureARB(GL_TEXTURE3_ARB);
glBindTexture(GL_TEXTURE_2D, farTex);
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE4_ARB);
glBindTexture(GL_TEXTURE_2D, gd->GetActiveInfoTexture());
}
glActiveTextureARB(GL_TEXTURE0_ARB);
}
}
示例4: SetupGlStateNear
void CGrassDrawer::SetupGlStateNear()
{
CBaseGroundDrawer* gd = readMap->GetGroundDrawer();
// bind textures
{
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, grassBladeTex);
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetGrassShadingTexture());
glActiveTextureARB(GL_TEXTURE2_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetShadingTexture());
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE3_ARB);
glBindTexture(GL_TEXTURE_2D, gd->GetActiveInfoTexture());
}
glActiveTextureARB(GL_TEXTURE5_ARB);
glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, cubeMapHandler->GetSpecularTextureID());
}
// bind shader
if (globalRendering->haveGLSL) {
EnableShader(GRASS_PROGRAM_NEAR);
if (shadowHandler->shadowsLoaded) {
glActiveTextureARB(GL_TEXTURE4_ARB);
glBindTexture(GL_TEXTURE_2D, shadowHandler->shadowTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE_ARB, GL_ALPHA);
}
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glMultMatrixf(camera->GetViewMatrix());
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
} else {
// FPP enable textures
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glMultiTexCoord4f(GL_TEXTURE1_ARB, 1.0f,1.0f,1.0f,1.0f); // workaround a nvidia bug with TexGen
SetTexGen(1.0f / (gs->mapx * SQUARE_SIZE), 1.0f / (gs->mapy * SQUARE_SIZE), 0.0f, 0.0f);
glActiveTextureARB(GL_TEXTURE2_ARB);
glEnable(GL_TEXTURE_2D);
glMultiTexCoord4f(GL_TEXTURE2_ARB, 1.0f,1.0f,1.0f,1.0f); // workaround a nvidia bug with TexGen
SetTexGen(1.0f / (gs->pwr2mapx * SQUARE_SIZE), 1.0f / (gs->pwr2mapy * SQUARE_SIZE), 0.0f, 0.0f);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
glTexEnvi(GL_TEXTURE_ENV, GL_RGB_SCALE_ARB, 2);
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE3_ARB);
glEnable(GL_TEXTURE_2D);
glMultiTexCoord4f(GL_TEXTURE3_ARB, 1.0f,1.0f,1.0f,1.0f); // workaround a nvidia bug with TexGen
SetTexGen(1.0f / (gs->pwr2mapx * SQUARE_SIZE), 1.0f / (gs->pwr2mapy * SQUARE_SIZE), 0.0f, 0.0f);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_ADD_SIGNED_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_MODULATE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_ARB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
}
}
glActiveTextureARB(GL_TEXTURE0_ARB);
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
glDepthMask(GL_TRUE);
ISky::SetupFog();
}
示例5: SetupGlStateNear
void CGrassDrawer::SetupGlStateNear()
{
CBaseGroundDrawer* gd = readMap->GetGroundDrawer();
const float3 windSpeed =
wind.GetCurrentDirection() *
wind.GetCurrentStrength() *
mapInfo->grass.bladeWaveScale;
if (shadowHandler->shadowsLoaded && globalRendering->haveGLSL) {
grassShader = grassShaders[GRASS_PROGRAM_NEAR_SHADOW];
grassShader->SetFlag("HAVE_INFOTEX", gd->DrawExtraTex());
grassShader->Enable();
grassShader->SetUniform2f(2, 0.0f, 0.0f);
grassShader->SetUniformMatrix4fv(6, false, shadowHandler->shadowMatrix);
grassShader->SetUniform4fv(7, shadowHandler->GetShadowParams());
grassShader->SetUniform1f(8, gs->frameNum);
grassShader->SetUniform3fv(9, &windSpeed.x);
grassShader->SetUniform3fv(10, &camera->GetPos().x);
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetShadingTexture());
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, shadowHandler->shadowTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE_ARB, GL_ALPHA);
static const float texConstant[] = {
mapInfo->light.groundAmbientColor.x * 1.24f,
mapInfo->light.groundAmbientColor.y * 1.24f,
mapInfo->light.groundAmbientColor.z * 1.24f,
1.0f
};
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, texConstant);
glActiveTextureARB(GL_TEXTURE2_ARB);
glBindTexture(GL_TEXTURE_2D, readMap->GetGrassShadingTexture());
glActiveTextureARB(GL_TEXTURE3_ARB);
glBindTexture(GL_TEXTURE_2D, grassBladeTex);
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE4_ARB);
glBindTexture(GL_TEXTURE_2D, gd->GetActiveInfoTexture());
}
glActiveTextureARB(GL_TEXTURE0_ARB);
if (!globalRendering->haveGLSL) {
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glActiveTextureARB(GL_TEXTURE2_ARB);
glEnable(GL_TEXTURE_2D);
glActiveTextureARB(GL_TEXTURE3_ARB);
glEnable(GL_TEXTURE_2D);
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE4_ARB);
glEnable(GL_TEXTURE_2D);
}
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
}
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glMultMatrixf(camera->GetViewMatrix());
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
} else {
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, grassBladeTex);
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, readMap->GetGrassShadingTexture());
glMultiTexCoord4f(GL_TEXTURE1_ARB, 1.0f,1.0f,1.0f,1.0f); // workaround a nvidia bug with TexGen
SetTexGen(1.0f / (gs->mapx * SQUARE_SIZE), 1.0f / (gs->mapy * SQUARE_SIZE), 0.0f, 0.0f);
glActiveTextureARB(GL_TEXTURE2_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, readMap->GetShadingTexture());
glMultiTexCoord4f(GL_TEXTURE2_ARB, 1.0f,1.0f,1.0f,1.0f); // workaround a nvidia bug with TexGen
SetTexGen(1.0f / (gs->pwr2mapx * SQUARE_SIZE), 1.0f / (gs->pwr2mapy * SQUARE_SIZE), 0.0f, 0.0f);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
glTexEnvi(GL_TEXTURE_ENV, GL_RGB_SCALE_ARB, 2);
if (gd->DrawExtraTex()) {
glActiveTextureARB(GL_TEXTURE3_ARB);
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_ADD_SIGNED_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_MODULATE);
//.........这里部分代码省略.........