如何使用OpenGL glDrawPixels()绘制以下动态 3D 数组?
您可以在这里找到文档:http://opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/drawpixels.html

float ***array3d;

void InitScreenArray()
{
    int i, j;

    int screenX = scene.camera.vres;
    int screenY = scene.camera.hres;

    array3d = (float ***)malloc(sizeof(float **) * screenX);

    for (i = 0 ;  i < screenX; i++) {
        array3d[i] = (float **)malloc(sizeof(float *) * screenY);

        for (j = 0; j < screenY; j++)
          array3d[i][j] = (float *)malloc(sizeof(float) * /*Z_SIZE*/ 3);
    }
}

我只能使用以下头文件:
#include <math.h>
#include <stdlib.h>
#include <windows.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

最佳答案

嗯...由于您要为每个像素分配一个单独的malloc(),因此您也必须通过单独调用glDrawPixels()来绘制每个像素。 (显然)这很疯狂;位图图形的想法是像素以相邻的紧凑格式存储,因此从一个像素移动到另一个像素的速度很快(O(1))。这对我来说很困惑。

更为明智的方法是通过一次调用malloc()来分配“3D数组”(通常称为2D像素数组,其中每个像素恰好由红色,绿色和蓝色成分组成),例如(在C中):

float *array3d;
array3d = malloc(scene.camera.hres * scene.camera.vres * 3 * sizeof *array3d);

关于c++ - 动态3D阵列上的OpenGL glDrawPixels,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/259890/

10-09 04:40