2011-07-16 89 views
1

如果我使用一個glTexImage2D調用來創建一個紋理像這樣的緩衝:一個glTexImage2D問題

glTexImage2D(GL_TEXTURE_2D /* target*/, 
      0 /* level */, 
      GL_RGBA /* internal format */, 
      width /* w */, 
      height /* h */, 
      0 /* border */, 
      GL_RGBA /* format (RGBA 4)*/, 
      GL_UNSIGNED_BYTE /* type */, 
      buffer /* pixel buffer */); 

我可以修改緩衝區,並期望質地它改變?

或者是在調用之後最終確定的紋理?

回答

6

不,OpenGL的將創建它的質感自己的副本,所以你不能修改,而不會複製來回(但這也意味着你可以重用或無緩衝。

2

如果您想要改變紋理的一部分,你會經常使用glTexSubImage2D。注意,這個函數期望新數據是連續的;所以如果你只是在紋理中間改變了一個小方形,這不是最好的主意在原始緩衝區中進行更改,因爲那樣您必須發送所有已更改行的像素,而不是僅發送受影響的列。