我知道在OpenGL
程序中可以有GL_MAX_TEXTURE_IMAGE_UNITS
紋理單元。但讓我們假設我只使用一個。 假設我有5個2D紋理。我可以將它們「映射」到單個紋理單元(TEXTURE0)來渲染它們全部。 我的意思是,我會做到這一點:我可以使用一個紋理單元5種不同的2D紋理
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex1);
//specify tex data and tex params for tex1
glBindTexture(GL_TEXTURE_2D, tex2);
//specify tex data and tex params for tex1
..等所有5個紋理
渲染循環:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex1);
//draw
glBindTexture(GL_TEXTURE_2D, tex2);
//draw
..和等所有5個紋理
在片段着色器中,我只使用1個初始化爲零的sampler2d變量(對於紋理單元0)
如果這不能正常工作,那麼我應該使用5個不同的紋理單元(TEXTURE0, TEXTURE0+1, ....TEXTURE0+5
)並將每個紋理「映射」到不同的紋理單元。
最重要的問題:如果我的第一個方法是正確的,那麼我可以「映射」到一個紋理單元上多少個2D紋理(現在只允許討論2D紋理)?
咦?你的意思是使用多紋理而不使用多紋理?你想要達到什麼目的?*「map」*對你來說意味着什麼?如果你的片段着色器只有一個'sampler2D',它怎麼能一次使用多個紋理? –