gpt4 book ai didi

c - 如何定义绝对值的顶点?

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

我正迈向 OpenGL 领域的第一步,但在 Vertex 声明方面遇到了问题。意思是,我只是通过使用相对于窗口的大小作为坐标来成功定义顶点(那些 0.25 意味着 500*0.25=125)。这似乎不符合直觉。

如何定义没有相对值的顶点?

#include <GLUT/glut.h>
#include <stdlib.h>

void displayInit(void) {
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
}

void display(void) {
glClear(GL_COLOR_BUFFER_BIT);

// Select a drawing color
glColor3f(1.0, 0.0, 0.0);
// Draw a square
glBegin(GL_POLYGON);
glVertex2f(-0.25, -0.25); // start from -1/4 window w, -1/4 window h
glVertex2f(-0.25, 0.25); // add point 1/4 window h up from center
glVertex2f(0.25, 0.25);
glVertex2f(0.25, -0.25);
glEnd();

// Display the whole drawing on screen
glFlush();
}

int main(int argc, char **argv) {
// Initialize with a window
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);

// Display first screen
displayInit();

// Enter the display loop
glutDisplayFunc(display);
glutMainLoop();

return 0;
}

这是图形的样子

enter image description here

最佳答案

在旧版本的 OpenGL 中,这是通过现在已弃用的矩阵操作函数(如 glOrtho)完成的。 (实际上,您对 glBegin、glVertex 和 glEnd 的使用也已弃用...)

如果您不介意使用已弃用的功能,请查看 glPushMatrix、glPopMatrix、glScale、glRotate 和 glTranslate,您将开始了解如何定义不同的坐标系。还要查看 glMatrixMode 并了解投影矩阵和模型 View 矩阵之间的区别。您的投影矩阵将是应用 glOrtho 的投影矩阵,如果您希望它“看起来正确”(远处的物体较小),则可能是 gluPerspective。

但是,如果您想使用现代 API,则必须使用类似 glm 的库自行对数据应用矩阵转换。 .

这是一个很棒的tutorial如何做到这一点。

关于c - 如何定义绝对值的顶点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18964701/

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