Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenGL中的部分透明HUD样式覆盖_C++_Opengl_Hud - Fatal编程技术网

C++ OpenGL中的部分透明HUD样式覆盖

C++ OpenGL中的部分透明HUD样式覆盖,c++,opengl,hud,C++,Opengl,Hud,我试图制作一个程序,在背景中显示一个红色的旋转立方体,上面覆盖着一个有纹理的四边形 该纹理是一个简单的24位位图,在白色背景上以黑色显示“Hello World”。我想白色的背景是透明的,这样立方体可以看到后面的覆盖。图像加载器检查每个像素的值,并添加相关的alpha值以将图像转换为32位位图 目前,我的程序用黑色文本显示覆盖层,但背景为红色,与立方体颜色相同。以下是用于初始纹理设置的代码: if (bitmap->Load("test.bmp")) { glGenTextures(

我试图制作一个程序,在背景中显示一个红色的旋转立方体,上面覆盖着一个有纹理的四边形

该纹理是一个简单的24位位图,在白色背景上以黑色显示“Hello World”。我想白色的背景是透明的,这样立方体可以看到后面的覆盖。图像加载器检查每个像素的值,并添加相关的alpha值以将图像转换为32位位图

目前,我的程序用黑色文本显示覆盖层,但背景为红色,与立方体颜色相同。以下是用于初始纹理设置的代码:

if (bitmap->Load("test.bmp")) {
   glGenTextures(1, &texture);
   glBindTexture(GL_TEXTURE_2D, texture);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
   glTexImage2D(GL_TEXTURE_2D, 0, 3, bitmap->GetWidth(), bitmap->GetHeight(),
      0, GL_RGBA, GL_UNSIGNED_BYTE, bitmap->GetPixelData());
}
这就是我的全部显示功能,以防任何东西干扰其他任何东西

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(40, 1, 0.1, 27.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
glTranslatef(0.0, 0.0, -1.1);
glRotatef(angle, 1.0, 1.0, 0.0);
glutSolidCube(0.1);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 640, 480, 0.0, -1.0, 10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glDisable(GL_CULL_FACE);

glClear(GL_DEPTH_BUFFER_BIT);

glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindTexture(GL_TEXTURE_2D, texture);

glBegin(GL_QUADS);
   glTexCoord2d(0.0, 0.0); glVertex2f(0.0, 0.0);
   glTexCoord2d(1.0, 0.0); glVertex2f(320.0, 0.0);
   glTexCoord2d(1.0, 1.0); glVertex2f(320.0, 240.0);
   glTexCoord2d(0.0, 1.0); glVertex2f(0.0, 240.0);
glEnd();

glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);

glFlush();
glutSwapBuffers();

默认的纹理环境是
GL_MODULATE
,它将当前颜色(立方体中的红色)与传入的纹理值混合

在渲染文本之前,切换到
GL_贴花
或执行
glColor3ub(255255255)