OpenGL:如何在glVertex3i中使用整数

时间:2011-01-23 04:31:55

标签: opengl

在glBegin(GL_TRIANGLES);     glVertex3i(100,100,0);     glVertex3i(100,80,0);     glVertex3i(80,80,0); glEnd();

这些电话不起作用。 只有glVertex3f工作,只是不知道为什么。 但是在glVertex3f中,我只能将float小于1。 因为如果我把一些浮点数大于1,那么顶点就会出现在屏幕之外。

所以我的问题是为什么以上的电话不起作用? 我认为这些原始信息不属于boudary,但不知道为什么。

2 个答案:

答案 0 :(得分:6)

如果您没有做任何事情来移动设置投影或视图(例如gluPerspective/glTranslate etc),那么默认情况下,您的视口将从x(-1,+ 1)跨越到y(-1, +1),这意味着您的屏幕看起来像:

                  y (+1)
        +------------------------+
        |                        |
        |                        |
x(-1)   |                        |   x(+1)
        |                        |
        |                        |
        |                        |
        +------------------------+
                 y (-1)

屏幕中心是(0,0)。

如果模型的坐标超出(-1,+ 1)范围,则需要将其缩小到此范围。因此,如果您在glBegin之前调用此字符,则应显示三角形:

glScalef(0.01, 0.01, 0.01);

这意味着“使所有内容1/100次更小,因此您的三角形将适合(-1,1)视口”。

您应该阅读转化/投影等信息。您可以在谷歌上搜索,或尝试以下链接之一:

答案 1 :(得分:5)

您在屏幕上看不到它们并不意味着它们实际上并不存在于openGL“Universe”中。

尝试将相机移开(使用gluLookAt方法 - 或使用平移和旋转)并再次放置点。你应该毫不费力地看到它们。

此外,我想假设glVertex3f只取0到1之间的数字,而不是数字,我想纠正你。您的代码可能是:

  

glVertex3f(100.0,100.0,0.0);

如果相机的位置允许您查看正在绘制的元素,它也会起作用。