使用OPENGL显示摄像头采集的图像,可是显示出来的是全黑图像,调试后摄像头采集部分是没问题的,可是只能把采集第一帧的图像数据传给储存纹理数据的存储区,哪位高手知道这是什么问题?

解决方案 »

  1.   

    OpenGL显示,肯定得用纹理贴图方式来做对吧,你用纹理替换那个函数就可以了
      

  2.   

    这是绘出纹理贴图部分的代码
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, 512, 512,GL_BGR_EXT,GL_UNSIGNED_BYTE, data);
    glBegin(GL_QUADS);
    glTexCoord2f(1.0f, 1.0f); glVertex3f( 11.0f,  8.3f, 0.0f);
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-11.0f,  8.3f, 0.0f);
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-11.0f, -8.3f, 0.0f);
    glTexCoord2f(1.0f, 0.0f); glVertex3f( 11.0f, -8.3f, 0.0f);

    glEnd();
    glFlush ();
    请问这段代码哪里出错了,怎么就是画不出图像来,data中存放摄像头采集回来的图像数据
      

  3.   

    在glTexSubImage2D之前少了一句绑定纹理,比如
    glBindTexture(GL_TEXTURE_2D, TexName);
    而这个TexName是通过
    glGenTextures(1, &TexName);
    生成的,记住只须生成一次,后面可无限制被绑定使用
      

  4.   

    找到问题了,是glVertex3f( 11.0f, 8.3f, 0.0f);中最后一个参数设置为-1才可以显示,为什么啊