Я обычно не работаю с низкоуровневыми связями, так что это может быть что-то глупое, что я упускаю из виду, но я не знаю.
Когда я создаю текстуру из файла, подобного этому
public Texture ( List<byte> pixels, int width, int height ) {
handle = GL.GenTexture();
GL.TexParameter( TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat );
GL.TexParameter( TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat );
GL.TexParameter( TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest );
GL.TexParameter( TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear );
GL.TexImage2D( TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, width, height, 0, PixelFormat.Rgba, PixelType.UnsignedByte, pixels.ToArray() );
}
public void Use () {
GL.Enable( EnableCap.Texture2D );
GL.ActiveTexture( TextureUnit.Texture0 );
GL.BindTexture( TextureTarget.Texture2D, handle );
}
А затем визуализируйте это так:
public void Draw () {
GL.BindVertexArray( VAO );
//texture.Use();
shader.Use();
GL.DrawElements( PrimitiveType.Triangles, indices.Length, DrawElementsType.UnsignedInt, 0 );
}
Практически все работает нормально, пока я не загрузлю другую текстуру. (из-за этого все становится второй текстурой) Возвращаясь к одной текстуре, когда я раскомментирую texture.Use();
Все мои треугольники становятся черными. Что происходит?
Я проверил, какие значения дает GL.GenTexture();
, и это 1 и 2, в то время как единственное время, когда текстура рендерится, дескриптор GL.BindTexture
равен 0. Установка его в 1 или 2 приводит к треугольники черные.