问个OpenGL小问题
c++吧
全部回复
仅看楼主
level 11
gameloftyou 楼主
第一张图是只有一个红色材质球体时的效果
第二张图是在球体背后加上一张纹理图后的效果
显然纹理图影响了球体的显示,有没有办法让它们互不受影响?[揉脸]

2012年07月25日 11点07分 1
level 11
gameloftyou 楼主
部分代码:
      //灯光
    {
        GLfloat light_position[] = {10.0f,10.0f,10.0f,1.0f};
        GLfloat light_ambient[] = {0.2f,0.2f,0.2f,1.0f};
        GLfloat light_diffuse[] = {1.0f,1.0f,1.0f,1.0f};
        GLfloat light_specular[] = {1.0f,1.0f,1.0f,1.0f};
        glLightfv(GL_LIGHT0,GL_POSITION,light_position);
        glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);
        glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);
        glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);
        glEnable(GL_LIGHT0);
        glEnable(GL_LIGHTING);
        glEnable(GL_DEPTH_TEST);
    }
    //纹理背景
    glPushMatrix();
    glScalef(6.0f,6.0f,0.0f);
    glBindTexture(GL_TEXTURE_2D,texGround);
    glBegin(GL_QUADS);
    glTexCoord2f(0.0f,0.0f);glVertex3f(-1.0f*aspect,-1.0f,-2.0f);
    glTexCoord2f(0.0f,1.0f);glVertex3f(-1.0f*aspect,1.0f,-2.0f);
    glTexCoord2f(1.0f,1.0f);glVertex3f(1.0f*aspect,1.0f,-2.0f);
    glTexCoord2f(1.0f,0.0f);glVertex3f(1.0f*aspect,-1.0f,-2.0f);
    glEnd();
    glPopMatrix();
    //球体
    glPushMatrix();
    {
        GLfloat mat_ambient[] = {0.5f,0.2f,0.2f,1.0f};
        GLfloat mat_diffuse[] = {0.8f,0.4f,0.2f,1.0f};
        GLfloat mat_specular[] = {1.0f,1.0f,1.0f,1.0f};
        GLfloat mat_emission[] = {0.2f,0.0f,0.0f,1.0f};
        GLfloat mat_shininess = 128.0f;
        glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
        glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
        glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
        glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);
        glMaterialf(GL_FRONT,GL_SHININESS,mat_shininess);
        glTranslatef(dx,dy,dz);
        glRotatef(ax,1.0f,0.0f,0.0f);
        glRotatef(ay,0.0f,1.0f,0.0f);
        glutSolidSphere(2.0,40,32);
    }
    glPopMatrix();
需要怎样修改?
2012年07月25日 11点07分 2
看样子是两种色素混到一起了。我用的是vtk,你这些函数我都不知道是干嘛的
2012年07月25日 12点07分
@蓝色的孤鹰 OpenGL函数命名不是很相似的吗?至少我见过的python实现库,名字几乎一模一样
2012年07月25日 12点07分
level 7
[打酱油]
2012年07月25日 11点07分 3
level 9
C可以写 opengl?表示布鸣真象
2012年07月25日 12点07分 4
opengl= Open Graphics Library, 而这个库就是c++库! 纯c当然不能
2012年07月25日 12点07分
@蓝色的孤鹰 我可以说我现在还是用c语言学的么[揉脸]
2012年07月25日 12点07分
2012年07月25日 12点07分
@gameloftyou 我用vtk就是基于opengl的,面向对象的太严格了,不管干什么都要add,new,delete。反正我是通过vtk这个库感受opengl
2012年07月25日 12点07分
level 14
画球之前把前面的贴图取消绑定就可以了[傻乐]
2012年07月25日 12点07分 5
[啊!]这么简单
2012年07月25日 12点07分
果然还是搞游戏的犀利,ORZ十三叔……
2012年07月25日 12点07分
十三叔搞游戏的啊[拜]
2012年07月25日 14点07分
@良化纲领_ [傻笑]我是打酱油的,又不搞渲染,只业余搞
2012年07月26日 01点07分
level 11
gameloftyou 楼主
好了,谢谢楼上前辈[傻笑]

2012年07月25日 12点07分 6
1