在glBegin(GL_TRIANGLES); glVertex3i(100,100,0); glVertex3i(100,80,0); glVertex3i(80,80,0); glEnd();
这些电话不起作用。 只有glVertex3f工作,只是不知道为什么。 但是在glVertex3f中,我只能将float小于1。 因为如果我把一些浮点数大于1,那么顶点就会出现在屏幕之外。
所以我的问题是为什么以上的电话不起作用? 我认为这些原始信息不属于boudary,但不知道为什么。
答案 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);
如果相机的位置允许您查看正在绘制的元素,它也会起作用。