2017-07-12 108 views
-2

我想绘制纹理四合一,但纹理正在改变每一帧。我的纹理是128x128 rgb数组。我将每个像素的rgb值存储在该数组中,并且我正在每帧更改该数组。我的窗口大小也是1024x1024。我想要我的像素阵列全屏,所以我正在创建一个纹理,并将此纹理添加到全尺寸的四边形。我怎样才能做到这一点?Opengl渲染动态纹理四合一

回答

1
GLuint texID; 

void initphase() 
{ 
    /* create texture object */ 
    glGenTextures(1, &texID) 
    /* bind texture and allocate storage */ 
    glBindTexture(GL_TEXTURE_2D, texID); 
    glTexImage2D(GL_TEXTURE_2D, 
     …, 
     NULL /* just initialize */ 
    ); 
    /* alternative: 
    * Use glTexStorage instead of glTexImage. 
    * Requires a few changed in how texture is used though */ 

    /* set parameters like filtering mode, and such */ 
    glTexParameteri(…); 
} 

void player() 
{ 
    while(playing){ 
     glClear(…); 
     glViewport(…); 

     /* draw other stuff */ 

     glBindTexture(GL_TEXTURE_2D, texID); 
     /* copy image to texture */ 
     glTexSubImage2D(GL_TEXTURE_2D, 0, …, image_data); 
     if(using_shaders){ 
      glUseProgram(…); 
      setup_modelview_and_projection_uniforms(); 
     } else { 
      glEnable(GL_TEXTURE_2D); 
      setup_modelview_and_projection_matrices(); 
     } 
     glDraw…(…); /* draw quad */ 

     /* draw other stuff */ 
     swap_buffers(); 
    } 
}