gpt4 book ai didi

c - 为什么这段代码不画三角形?

转载 作者:太空宇宙 更新时间:2023-11-04 03:49:57 25 4
gpt4 key购买 nike

我是 OpenGL 的新手,我刚刚使用 SDL 2 编写了一段代码,据我所知应该绘制一个三角形,但这段代码似乎不起作用,所以我没有完成学习。我已经得到了 SDL 2 文档中说我需要的所有初始化代码,并且动态加载返回的函数是可调用的。当我执行这段代码而不是三角形时,我得到一个黑色(但已清除)的窗口。为什么这段代码没有画出我想要的三角形,为什么窗口被这段代码清黑了?我想知道主要是第一个问题背后的技术细节,以便我以后可以依赖它。

(*main_context.glViewport)(0, 0, 100, 100);
(*main_context.glBegin)(GL_TRIANGLES);
(*main_context.glColor4d)(255, 255, 255, 255);
(*main_context.glVertex3d)(1, 1, -50);
(*main_context.glVertex3d)(1, 30, 1);
(*main_context.glVertex3d)(30, 1, 1);
(*main_context.glEnd)();
(*main_context.glFinish)();
(*main_context.glFlush)();
SDL_GL_SwapWindow(window);

更新:

我已经修改了我的代码以包含不同的坐标,并且可以绘制三角形,但是当距离更远时我无法绘制它。这是为什么?

(*main_context.glVertex3d)(2, -1, 1); /* Works. */
(*main_context.glVertex3d)(2, -1, 3); /* Doesn't work. */

最佳答案

除非您在代码中的其他地方设置投影和/或模型 View 矩阵,否则它使用默认(单位矩阵)变换,这是一个带 (-1, -1) 的正交投影。在左下方和(1, 1)在右上角。 glViewport仅更改渲染到的默认帧缓冲区的部分,它与投影没有任何关系。

对于正交投影,Z 坐标不会影响点的屏幕空间位置,除非不会渲染 Z 裁剪平面之外的点。在这种情况下,这是 -1 <= z <= 1 之外的所有内容.鉴于您的观点之一是 (1, 1, -50) ,这似乎是你的问题。

关于c - 为什么这段代码不画三角形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21504878/

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