OpenGL:如何在glVertex3i中使用整数

Nov*_*Cai 3 opengl

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

这些调用不起作用.只有glVertex3f工作,只是不知道为什么.但是在glVertex3f中,我只能将float设置为小于1.因为如果我放置一个大于1的浮点数,则顶点将不在屏幕上.

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

She*_*aig 6

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

                  y (+1)
        +------------------------+
        |                        |
        |                        |
x(-1)   |                        |   x(+1)
        |                        |
        |                        |
        |                        |
        +------------------------+
                 y (-1)
Run Code Online (Sandbox Code Playgroud)

并且屏幕的中心是(0,0).

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

glScalef(0.01, 0.01, 0.01);
Run Code Online (Sandbox Code Playgroud)

这意味着"使所有1/100时间都变小,因此您的三角形将适合(-1,1)视口".

您应该阅读转换/投影等.您可以在谷歌搜索,或尝试以下链接之一:


Maj*_*uiF 5

你没有在屏幕上看到它们的事实并不意味着它们实际上并不存在于openGL"宇宙"中.

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

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

glVertex3f(100.0,100.0,0.0);

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