如何使用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/