VC++贴图 用vc++在地面上贴了一个图(黄褐色),但是却严重影响了原本画图的效果,尤其是白色灯光下的白色物体,请问如何改善? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把贴图图像的Alpha通道值降低一些试试 void SetupRC(void) { // Lighting values GLbyte *pBytes; GLint iWidth, iHeight, iComponents; GLenum eFormat; GLint iLoop; GLfloat ambientProperties[] = {0.7, 0.7, 0.7, 1.0}; GLfloat diffuseProperties[] = {0.8, 0.8, 0.8, 1.0}; GLfloat specularProperties[] = {1.0, 1.0, 1.0, 1.0}; // Light values and coordinates glClearDepth(1.0); glEnable(GL_DEPTH_TEST); // Hidden surface removal glFrontFace(GL_CCW); // Counter clock-wise polygons face out glEnable(GL_CULL_FACE); // Do not calculate insides // Enable lighting glEnable(GL_LIGHTING); // Setup and enable light 0 glLightfv(GL_LIGHT0, GL_AMBIENT, ambientProperties); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseProperties); glLightfv(GL_LIGHT0, GL_SPECULAR, specularProperties); glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, 1.0); glEnable(GL_LIGHT0); // Load textures glEnable(GL_TEXTURE_2D); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glGenTextures(TEXTURE_COUNT, textures); for(iLoop = 0; iLoop < TEXTURE_COUNT; iLoop++) { // Bind to next texture object glBindTexture(GL_TEXTURE_2D, textures[iLoop]); // Load texture, set filter and wrap modes pBytes = gltLoadTGA(szTextureFiles[iLoop],&iWidth, &iHeight, &iComponents, &eFormat); gluBuild2DMipmaps(GL_TEXTURE_2D, iComponents, iWidth, iHeight, eFormat, GL_UNSIGNED_BYTE, pBytes); free(pBytes); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); // Don't need original texture data any more } glShadeModel(GL_SMOOTH); glClearColor(0.81f, 0.83f, 0.90f, 1.0f ); }以上是环境设置,下面是调用过程。能说的具体点吗glDisable(GL_LIGHTING); glBegin(GL_QUADS); //glColor3f(0.8+colorAdd,0.8+colorAdd,0.75+colorAdd); glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_FLOOR]); glTexCoord2f(0.0f, 0.0f); glVertex3f(-400.0f, -80.0f, 80.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f(400.0f, -80.0f, 80.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f(400.0f, -80.0f, -300.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-400.0f, -80.0f, -300.0f); glEnd(); 我好像和你不一样,我只是在做OpenGL的作业。你的好像是遥感应用吧,不太懂 FlashGet 3.7的界面 使用静态库的问题 用什么类型可以容纳一个小数,比如:0.36. OLE DB读SQL数据库? 结构体的问题 急啊,dll中使用STL的问题 请问如何在其它类中获得View的指针?(基于SDI文档型的) 谁能写一个List Control里面添加checkbox的代码 菜的不得了的问题 高人帮帮忙如何控制硬件 &class_name::class##class_name -------- 如何解释? vc 添加OnSize消息响应函数问题!
void SetupRC(void)
{
// Lighting values
GLbyte *pBytes;
GLint iWidth, iHeight, iComponents;
GLenum eFormat;
GLint iLoop; GLfloat ambientProperties[] = {0.7, 0.7, 0.7, 1.0};
GLfloat diffuseProperties[] = {0.8, 0.8, 0.8, 1.0};
GLfloat specularProperties[] = {1.0, 1.0, 1.0, 1.0}; // Light values and coordinates
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST); // Hidden surface removal
glFrontFace(GL_CCW); // Counter clock-wise polygons face out
glEnable(GL_CULL_FACE); // Do not calculate insides // Enable lighting
glEnable(GL_LIGHTING); // Setup and enable light 0
glLightfv(GL_LIGHT0, GL_AMBIENT, ambientProperties);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseProperties);
glLightfv(GL_LIGHT0, GL_SPECULAR, specularProperties);
glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, 1.0);
glEnable(GL_LIGHT0);
// Load textures
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glGenTextures(TEXTURE_COUNT, textures);
for(iLoop = 0; iLoop < TEXTURE_COUNT; iLoop++)
{
// Bind to next texture object
glBindTexture(GL_TEXTURE_2D, textures[iLoop]); // Load texture, set filter and wrap modes
pBytes = gltLoadTGA(szTextureFiles[iLoop],&iWidth, &iHeight, &iComponents, &eFormat);
gluBuild2DMipmaps(GL_TEXTURE_2D, iComponents, iWidth, iHeight, eFormat, GL_UNSIGNED_BYTE, pBytes);
free(pBytes); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// Don't need original texture data any more
} glShadeModel(GL_SMOOTH);
glClearColor(0.81f, 0.83f, 0.90f, 1.0f );
}
以上是环境设置,下面是调用过程。能说的具体点吗
glDisable(GL_LIGHTING);
glBegin(GL_QUADS);
//glColor3f(0.8+colorAdd,0.8+colorAdd,0.75+colorAdd);
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_FLOOR]);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-400.0f, -80.0f, 80.0f); glTexCoord2f(1.0f, 0.0f);
glVertex3f(400.0f, -80.0f, 80.0f); glTexCoord2f(1.0f, 1.0f);
glVertex3f(400.0f, -80.0f, -300.0f); glTexCoord2f(0.0f, 1.0f);
glVertex3f(-400.0f, -80.0f, -300.0f);
glEnd();