如何解决如何在现代 openGL 中从二维数组绘制图像
我想用 openGL 画点,我有一个 32x32 的屏幕尺寸,我想用红色填充它,但是我不明白 glVertex2f(-1,0.5)
的参数是如何工作的
我的第一反应是做这样的事情:
glutInit(&argc,argv); // Initialize GLUT
glutCreateWindow("OpenGL Setup Test"); // Create a window with the given title
glutInitWindowSize(32,32); // Set the window's initial width & height
glutDisplayFunc(displaySpectrogram); // Register display callback handler for window re-paint
glutMainLoop(); // Enter the event-processing loop
glClearColor(0.0f,0.0f,1.0f); // Set background color to black and opaque
glClear(GL_COLOR_BUFFER_BIT); // Clear the color buffer (background)
glBegin(GL_POINTS);
glColor3f(1.0f,0.0f); // Red
for (int i = 0; i < 32; i++)
{
for (int j = 0; j < 32; j++)
{
glVertex2f(i,j);
}
}
glEnd();
glFlush(); // Render now
但我认为 glVertex2f()
参数范围是 -1 到 1,所以我不确定如何实现。
纹理还有另一种方法,但我不知道如何使用它们,也没有在线教程
解决方法
我建议使用 Orthographic projection。在正交投影中,视图空间坐标线性映射到剪辑空间坐标和标准化设备坐标。视域由 6 个距离(左、右、下、上、近、远)定义。 left、right、bottom、top、near 和 far 的值定义了一个长方体(盒子)。
使用旧版 OpenGL 矩阵,您可以使用 glOrtho
设置正交投影矩阵:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,32,-1,1);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。