小编Ran*_*lal的帖子

来自数组的 gldrawpixel rgb 值

我有一个三维数组

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();
}
Run Code Online (Sandbox Code Playgroud)

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

glBegin(GL_POINT)
// code here
glEnd
Run Code Online (Sandbox Code Playgroud)

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

关于如何在 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; 
}
Run Code Online (Sandbox Code Playgroud)

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

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; …
Run Code Online (Sandbox Code Playgroud)

c++ arrays opengl freeglut

3
推荐指数
1
解决办法
7528
查看次数

标签 统计

arrays ×1

c++ ×1

freeglut ×1

opengl ×1