internal void BindTexture(glTexture Texture, glTexture.BindTarget Target) { lock (_TextureUnitTrackers) { _ActiveTextureUnit.BindTexture(Texture, Target); } }
internal void DeleteTexture(glTexture Texture) { int textureHandle = Texture.Handle; lock (this) { #if NET_STANDARD_13 _glDeleteTextures(1, &textureHandle); #else if (_CurrentThreadId == Thread.CurrentThread.ManagedThreadId) { _glDeleteTextures(1, &textureHandle); } else { if (_PendingTextureDeleteCount == _PendingTextureDelete.Length) { Array.Resize <int>(ref _PendingTextureDelete, _PendingTextureDelete.Length * 2); } _PendingTextureDelete[_PendingTextureDeleteCount] = textureHandle; _PendingTextureDeleteCount++; } #endif } }
internal void TexParameter(glTexture Texture, glTexture.BindTarget Target, int Parameter, int Value) { int indexTarget = GlTargetTotextureTargetIndex(Target); lock (_TextureUnitTrackers) { if (_ActiveTextureUnit._Textures[indexTarget] != Texture) { throw new Exception("The texture is not bound correctly"); } _glTexParameteri((int)Target, Parameter, Value); } }
internal void TexImage2D(glTexture Texture, glTexture.BindTarget Target, int Level, glTexture.InternalFormat InternalFormat, int Width, int Height, glTexture.Format Format, glTexture.Type Type, IntPtr Data) { int indexTarget = GlTargetTotextureTargetIndex(Target); lock (_TextureUnitTrackers) { if (_ActiveTextureUnit._Textures[indexTarget] != Texture) { throw new Exception("The texture is not bound correctly"); } _glTexImage2D((int)Target, Level, (int)InternalFormat, Width, Height, 0, (int)Format, (int)Type, Data); } }
public glTexture[] GenTextures(int numTextures) { int[] textureHandle = new int[numTextures]; fixed(int *pTextureHandles = &textureHandle[0]) { _glGenTextures(numTextures, pTextureHandles); } glTexture[] textures = new glTexture[numTextures]; for (int n = 0; n < numTextures; n++) { textures[n] = new glTexture(this, textureHandle[n]); } return(textures); }
internal void BindTexture(glTexture Texture, glTexture.BindTarget Target) { int indexTarget = GlTargetTotextureTargetIndex(Target); lock (_Textures) { if (Texture == null) { _Context._glBindTexture((int)Target, 0); _Textures[indexTarget] = null; } else { _Context._glBindTexture((int)Target, Texture.Handle); _Textures[indexTarget] = Texture; } } }
internal void FramebufferTexture(glFramebuffer framebuffer, glFramebuffer.BindTarget Target, glFramebuffer.Attachment attachment, glTexture texture, int level) { int indexTarget = GlTargetToFramebufferTargetIndex(Target); lock (_Framebuffers) { if (_Framebuffers[indexTarget] != framebuffer) { throw new Exception("Invalid bind target. The frambeuffer must be bound to this target first"); } _glFramebufferTexture((int)Target, (int)attachment, texture.Handle, level); } }
public void AttachTexture(BindTarget Target, Attachment Attachment, glTexture texture, int Level) { _Parent.FramebufferTexture(this, Target, Attachment, texture, Level); }