c++ - openGL中的全透明对象

标签 c++ opengl opengl-1.x

我需要创建一个完全透明的表面,该表面通过轴的原点并始终与屏幕平行。 我正在尝试使用此代码(在 c++ 中),但结果类似于 50% 混合(不完全):

glPushMatrix();     

    glLoadIdentity();                       

    glBlendFunc(1, 1);

    glBegin(GL_QUADS);
    glVertex3f(-100, -100, -0.003814);
    glVertex3f(100, -100, -0.003814);
    glVertex3f(100, 100, -0.003814);
    glVertex3f(-100, 100, -0.003814);
    glEnd();

glPopMatrix();

附加信息:我需要这个透明表面来使用函数 gluUnProject(winX, winY, winZ, model, proj, view, &ox, &oy, &oz) ;

最佳答案

如果你只想填充深度缓冲区,你可以通过 glColorMask() 禁用颜色写入:

glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE );
drawQuad();
glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
doUnproject();

关于c++ - openGL中的全透明对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20586710/

相关文章:

c++ - 如何在3D OpenGL场景上绘制SDL 2D矩形?

java - OpenGL深度缓冲区的范围很短

c++ - opengl中的多个聚光灯不起作用

c++ - glMultMatrix 在 glBegin() 内部不起作用

minecraft-forge - Minecraft 透明渲染隐藏方 block

c++ - 本地餐厅自动早餐计费的问题 (c++)

c++ - 是否有任何关于为什么重新定义枚举器格式错误的规则?

c++ - undefined symbol (CLSID_CMPEG2EncoderVideoDS)

c++ - 从 C 数组初始化 ublas vector

opengl - 在单个 VAO 中使用多个索引列表