gpt4 book ai didi

c++ - 数组中的 gldrawpixel rgb 值

转载 作者:太空狗 更新时间:2023-10-29 20:42:05 24 4
gpt4 key购买 nike

我有一个三维数组

unsigned int window_RGBData[3][640][480];
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDrawPixels(window_Width,window_Height,GL_RGB,GL_UNSIGNED_INT, window_RGBData);
glutSwapBuffers();
}

它只显示黑屏,无论数组中的值是什么。数组是这样的,第一维是红色,第二维是绿色,第三维是蓝色。当我使用 gl_unsinged_byte 而不是 int 时,我得到黑白行(如果所有数组都是 255)。所以它正在从数组中读取。但我想我无法为 opengl 指定正确的数组格式。我可以使用

glBegin(GL_POINT)
// code here
glEnd

但出于特定原因,这种方式是越界的。

关于如何在 gldrawpixels 函数或任何其他方式中指定格式的任何想法。

初始化等:

int Image::OpenGLShow(){
// Display onscreen
int argc=1;
char* argv[1];
argv[0]=strdup("Helloguys");
glutInit(&argc, argv);
window_Height=Height;
window_Width= Width;
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(Width, Height);
glutCreateWindow("OpenGL glDrawPixels demo");

glutDisplayFunc(display);
glEnable(GL_DEPTH_TEST);

glutMainLoop();
return 0;
}

编辑:我相信问题出在我放入数组中的值上。现在这是数组的填充方式:

for(int i =0;i<200;i++){
for (int j=0; j<200;j++){
// rgb values at i*j point on screen.
window_RGBData[0][i][j]=red_value; // 0-255
window_RGBData[1][i][j]=green_value;
window_RGBData[2][i][j]=blue_value;
}
}

所以基本上我假设 gldrawpixels 方法将把这三个结合起来并显示像素,这取决于我提供的格式。这绝对不是 gldrawpixels 正在做的事情。那么我应该更改数组的填充方式还是更改甲酸盐值?

最佳答案

该数组太大,无法放入堆栈。

增加堆栈大小,在堆上分配它,或者尝试更小的东西:

#include <GL/glut.h>
#include <cstdlib>

const unsigned int W = 200;
const unsigned int H = 200;

void display()
{
glClearColor( 0, 0, 0, 1 );
glClear( GL_COLOR_BUFFER_BIT );

unsigned int data[H][W][3];
for( size_t y = 0; y < H; ++y )
{
for( size_t x = 0; x < W; ++x )
{
data[y][x][0] = ( rand() % 256 ) * 256 * 256 * 256;
data[y][x][1] = ( rand() % 256 ) * 256 * 256 * 256;
data[y][x][2] = ( rand() % 256 ) * 256 * 256 * 256;
}
}

glDrawPixels( W, H, GL_RGB, GL_UNSIGNED_INT, data );

glutSwapBuffers();
}

int main( int argc, char **argv )
{
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
glutInitWindowSize( W, H );
glutCreateWindow( "GLUT" );
glutDisplayFunc( display );
glutMainLoop();
return 0;
}

关于c++ - 数组中的 gldrawpixel rgb 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20056174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com