如何缩放和平移opengl输出屏幕中显示的每个组件,而不是在每个glVertex2f上应用Arthamatics

mkh04yzy  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(124)

我是opengl的初学者。我在网上搜索了一种方法来 * 集体 * 应用缩放和翻译到opengl的每个元素,而不是像这样在每个顶点上应用算术(乘以3. 2,减去1300),但没有找到任何帮助材料

glVertex2f(screenx * 3.2 - 1300, screeny * 3.2 - 1300);
 glVertex2f(screenx1 * 3.2 - 1300, screeny1 * 3.2 - 1300);

我已经厌倦了使用这个算法与每个顶点为整个项目。这里是一些OpenGL功能或编程方便的方式,可以减少多种类型的相同的算法对每个顶点。

x3naxklr

x3naxklr1#

当使用(传统)固定函数管道时,每个顶点坐标都经过模型视图矩阵和投影矩阵的转换,使用glScaleglTranslate可以更改模型视图矩阵,当前矩阵可以使用glPushMatrix / glPopMatrix进行保存和恢复。

glPushMatrix();
glTranslatef(-1300.0f, -1300.0f, 0);
glScalef(3.2f, 3.2f, 1.0f);

glBegin(GL_LINES);
glVertex2f(screenx, screeny);
glVertex2f(screenx1, screeny1);
// [...]
glEnd();

glPopMatrix();

相关问题