+ 2
DirectX texture arrays
I want to do batch-rendering with OpenGL and DirectX. I have this glsl code for the fragment(pixel) shader: #version 450 core out vec4 FSOutFragColor; in vec2 VSOutTexCoords; in flat uint VSOutTexIndex; uniform sampler2D[16] u_Textures; void main() { FSOutFragColor = texture(u_Textures[VSOutTexIndex], VSOutTexCoords); } But if I try to do the same thing with hlsl's Texture2D it gives me: X3512: sampler array index must be a literal expression. (I know what the error is saying) I searched the web and didn't find any clear answers, can someone help me with this ^_^
1 Answer
+ 1
Alright, so I figured it out (I asked chili on discord).
" You can't dynamically index into different texture resources. The array syntax is just a convenience, the compiler has to generate hard-coded lookups for each fetch. If you want full dynamic access you either need to use texture arrays as Nik02 suggests, use a texture atlas, or use some combination of the two.
so you either have to generate those hard-coded lookups yourself or use something more dynamic like a kind of atlas ".
So I need to use Texture2DArray in hlsl and sampler2DArray in glsl and all the textures have to be the same size ( so I'll need to use texture atlases ).