如何在现代 openGL 中从二维数组绘制图像
How to draw an image from a 2d array in modern 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, 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, 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。在正交投影中,视图 space 坐标线性映射到剪辑 space 坐标和归一化设备坐标。查看体积由 6 个距离(左、右、下、上、近、远)定义。 left、right、bottom、top、near 和 far 的值定义了一个长方体(盒子)。
对于旧版 OpenGL 矩阵,您可以使用 glOrtho
设置正交投影矩阵:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 32, 0, 32, -1, 1);
我想用 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, 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, 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。在正交投影中,视图 space 坐标线性映射到剪辑 space 坐标和归一化设备坐标。查看体积由 6 个距离(左、右、下、上、近、远)定义。 left、right、bottom、top、near 和 far 的值定义了一个长方体(盒子)。
对于旧版 OpenGL 矩阵,您可以使用 glOrtho
设置正交投影矩阵:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 32, 0, 32, -1, 1);