如何在现代 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);