gpt4 book ai didi

c++ - glOrtho 不工作?

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:37 24 4
gpt4 key购买 nike

 /* OpenGL animation code goes here */
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
glClear (GL_COLOR_BUFFER_BIT);
glDisable(GL_DEPTH_TEST);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f,512.0f,0.0f,512.0f,0.0f,1.0f);

glMatrixMode(GL_MODELVIEW_MATRIX);
glPushMatrix ();
glLoadIdentity();
glTranslatef(x,y,0.0f);
//glRotatef (theta, 0.0f, 0.0f, 1.0f);

glBegin (GL_TRIANGLES);
glColor3f (1.0f, 0.0f, 0.0f); glVertex2f (0.0f, 1.0f);
glColor3f (0.0f, 1.0f, 0.0f); glVertex2f (0.8f, -0.5f);
glColor3f (0.0f, 0.0f, 1.0f); glVertex2f (-0.8f, -0.5f);
glEnd ();
glPopMatrix ();

SwapBuffers (hDC);
//theta += 0.1f;
Sleep(1);
}

这是主要的简单 opengl 循环。

最近,我回来学习 Opengl(离开它大约 2 年之后)。问题是,我尝试使用 glOrtho 创建 2D 环境,但它不起作用。我的意思是,该程序似乎忽略了 glOrtho 调用(没有错误,没有警告,没有投影,什么都没有)。这会导致 GL_TRIANGLE 的顶点 (0,1) 击中窗口的顶部,任何超过 1.0f 的东西都会飞出视口(viewport)(我认为它仍然是一个单位矩阵?)。我尝试更改参数,但视口(viewport)中没有发生任何变化。我不知道我是否遗漏了什么(可能遗漏了一些初始化步骤或一些我不知道的弃用)。

最佳答案

glOrtho(0.0f,512.0f,0.0f,512.0f,0.0f,1.0f);

该投影有效地选择了宽度为 512、高度为 512、深度为 1 个单位的框作为可见世界空间。然而,您指定的顶点都将位于框的一个非常小的子集中,即在一个单元内。

glBegin (GL_TRIANGLES);
glColor3f (1.0f, 0.0f, 0.0f); glVertex2f (0.0f, 1.0f);
glColor3f (0.0f, 1.0f, 0.0f); glVertex2f (0.8f, -0.5f);
glColor3f (0.0f, 0.0f, 1.0f); glVertex2f (-0.8f, -0.5f);
glEnd();

我认为您只是混淆了 glOrtho 和 glViewport 的使用。

关于c++ - glOrtho 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com