我有一個紋理,我可以渲染16幅圖畫。該紋理的尺寸爲1024x1024,並分爲4x4「插槽」,每個256x256像素。如何使用OpenGL ES清除alpha 0紋理的部分?
在我將一個新圖形渲染到一個插槽之前,我想清除它以便舊圖形被擦除並且插槽完全透明(alpha = 0)。
有沒有辦法用OpenGL做到這一點或需要我直接在內存中訪問紋理像素,並用memset oslt清除它們?
我有一個紋理,我可以渲染16幅圖畫。該紋理的尺寸爲1024x1024,並分爲4x4「插槽」,每個256x256像素。如何使用OpenGL ES清除alpha 0紋理的部分?
在我將一個新圖形渲染到一個插槽之前,我想清除它以便舊圖形被擦除並且插槽完全透明(alpha = 0)。
有沒有辦法用OpenGL做到這一點或需要我直接在內存中訪問紋理像素,並用memset oslt清除它們?
我想像你只是正常更新當前質地:
std::vector<unsigned char> emptyPixels(1024*1024*4, 0); // Assuming RGBA/GL_UNSIGNED_BYTE
glBindTexture(GL_TEXTURE_2D, yourTextureId);
glTexSubImage2D(GL_TEXTURE_2D,
0,
0,
0,
1024,
1024,
GL_RGBA,
GL_UNSIGNED_BYTE,
emptyPixels.data()); // Or &emptyPixels[0] if you're stuck with C++03
即使你更換的每個像素,glTexSubImage2D比再造一個新的紋理更快。
謝謝。當我按下「發佈」後,我也想到了glTexSubImage2D :-)傻我...... – Mayoneez