c - 线条和纹理不会一起出现

标签 c opengl

这是我画线的方法,我用鼠标画线

static struct
{
  GLfloat p[MAX_POINTS][2];
  GLuint point_cnt;
} contours [ MAX_CONTOURS ] ;


GLuint point_cnt_mouse;
point_cnt_mouse = contours[contour_cnt].point_cnt;
glColor3f( 0.0, 0.0, 0.0 );
glBegin(GL_LINES);
glLineWidth(5.0);
int i;
int j;
for(i = 0; i <= contour_cnt; i++)
{
  GLuint point_cnt;
  point_cnt = contours[i].point_cnt;
  if (contours[i].point_cnt == 0)
  {
    glVertex2fv ( P );
    glVertex2fv ( P );
  }//if   
  else
  {
    for(j = 2; j <= point_cnt; j++)
    {
      glVertex2fv (contours[i].p[j-2]);
      glVertex2fv (contours[i].p[j-1]);               
    }//for                
  }//else
}//for
if(point_cnt_mouse > 0)
{
  glVertex2fv(contours[contour_cnt].p[point_cnt_mouse-1]);
  glVertex2fv(P);
}//if  
glEnd();

然后我使用 glTexImage2D() 制作 GL_TEXTURE_2D 然后 我的显示是

void display()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glLoadIdentity();
  glPushMatrix ();     
    glTranslatef(-4.0, 5.0, -6.0);
    //this is box and load texture on it
    drawPlane();
  glPopMatrix();
  glutSwapBuffers();
  glFlush();
  }

void myinit()
{
  glClearColor(1.0, 1.0, 1.0, 1.0);
  glEnable(GL_DEPTH_TEST);
  //load png image 
  drawLogo();
  glDisable(GL_DEPTH_TEST);
}

Logo 不会出现线条,为什么?任何人都可以告诉我的代码有什么问题吗?

最佳答案

确保在绘制线条之前禁用纹理 (glDisable(GL_TEXTURE_2D))。并在绘制纹理之前重新启用 (glEnable(GL_TEXTURE_2D))。

如果您使用默认的 GL_MODULATE 纹理环境,请确保在使用纹理绘制之前将当前颜色设置为白色 (glColor3ub(255,255,255))。如果您在行例程中的 glColor3f( 0.0, 0.0, 0.0 ) 之后绘制纹理,则 GL_MODULATE 会将所有纹素 RGB 值乘以零,使您到处都是黑色。

关于c - 线条和纹理不会一起出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15068653/

相关文章:

c - getch() 将回车等同于 esc 键

c - ascii字符限制是255?

c - 这是无条件跳转的好方法吗?

c++ - 如何在 OpenGL/C++ 中绘制一个居中的字符串?

swift - 在 Swift 项目中使用 OpenGL

函数类型冲突和强制转换警告?

c - 如何计算C中的 float ?

opengl - 当窗口大小调整时,如何使 SDL 窗口中的 OpenGL 视口(viewport)保持静止?

c# - 试图设置 VBO :s in C# using TAO and OpenGL TK framework

c++ - 指示灯亮起,但没有出现立方体