绘制四边形时,当旋转进入垂直于屏幕的位置时,它会消失。理想情况下,我希望看到的是(b)但我什么都没得到
我的代码有问题吗? (警告以下旧的openGL代码)
void draw_rect(double vector[4][3], int rgb[3], double transp)
{
GLint is_depth, is_blend, blend_src, blend_dst;
glGetIntegerv(GL_DEPTH_WRITEMASK, &is_depth);
glGetIntegerv(GL_BLEND, &is_blend);
glGetIntegerv(GL_BLEND_SRC, &blend_src);
glGetIntegerv(GL_BLEND_DST, &blend_dst);
glEnable(GL_BLEND);
glDepthMask(0);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// code to set the color ...
glBegin(GL_POLYGON);
glVertex3v(&vector[0][0]);
glVertex3v(&vector[1][0]);
glVertex3v(&vector[2][0]);
glVertex3v(&vector[3][0]);
glEnd();
if (!is_blend){ glDisable(GL_BLEND); }
glDepthMask(is_depth);
glBlendFunc(blend_src, blend_dst);
}
答案 0 :(得分:2)
四边形(假设它由共面面定义,如在这种情况下)根据定义是无限薄的。垂直于相机时它是不可见的是正确的行为。
“正确”的解决方案是制作一个盒子而不是一个四边形。
有关使用多维数据集的示例,请参阅Drawing cube 3D using Opengl。您需要调整顶点位置以使立方体沿一个维度(可能是Z)变小,但它会为您提供您正在寻找的效果。
此外,停止使用固定功能(glVertex
等)。它已被弃用多年。着色器并不那么困难,通过您最喜欢的搜索引擎很容易找到示例。
答案 1 :(得分:1)
当四边形垂直于屏幕时,尝试将其设为一定宽度的线