Update Texture base class to accept slot when calling Bind

This commit is contained in:
miku-666
2024-10-09 12:05:55 +02:00
parent 9d75186e87
commit 0ce4107c53
6 changed files with 14 additions and 26 deletions

View File

@@ -84,7 +84,7 @@ namespace PckStudio.Rendering
// render texture
{
_modelRenderTexture = new Texture2D(0);
_modelRenderTexture = new Texture2D();
_modelRenderTexture.PixelFormat = PixelFormat.Bgra;
_modelRenderTexture.InternalPixelFormat = PixelInternalFormat.Rgba8;
_modelRenderTexture.MinFilter = TextureMinFilter.Nearest;
@@ -219,7 +219,7 @@ namespace PckStudio.Rendering
ShaderProgram shader = GetShader("CubeShader");
_modelRenderTexture.Bind();
_modelRenderTexture.Bind(slot: 0);
if (RenderModelBounds)
{
@@ -230,6 +230,7 @@ namespace PckStudio.Rendering
{
DrawMesh(item, shader, item.Transform * Matrix4.CreateScale(1f, -1f, -1f));
}
_modelRenderTexture.Unbind();
}
}
}

View File

@@ -300,7 +300,7 @@ namespace PckStudio.Rendering
#if USE_FRAMEBUFFER
_framebuffer = new FrameBuffer();
_framebuffer.Bind();
_framebufferTexture = new Texture2D(0);
_framebufferTexture = new Texture2D();
_framebufferTexture.PixelFormat = OpenTK.Graphics.OpenGL.PixelFormat.Rgb;
_framebufferTexture.InternalPixelFormat = PixelInternalFormat.Rgb;
_framebufferTexture.SetSize(Size);
@@ -355,7 +355,7 @@ namespace PckStudio.Rendering
ShaderProgram framebufferShader = GetShader("Internal_framebufferShader");
framebufferShader.Bind();
_framebufferVAO.Bind();
_framebufferTexture.Bind();
_framebufferTexture.Bind(slot: 0);
GL.DrawArrays(PrimitiveType.Triangles, 0, 6);

View File

@@ -401,7 +401,7 @@ namespace PckStudio.Rendering
AddShader("CubeShader", cubeShader);
GLErrorCheck();
armorTexture = new Texture2D(0);
armorTexture = new Texture2D();
armorTexture.PixelFormat = OpenTK.Graphics.OpenGL.PixelFormat.Bgra;
armorTexture.InternalPixelFormat = PixelInternalFormat.Rgba8;
armorTexture.MinFilter = TextureMinFilter.Nearest;
@@ -411,7 +411,7 @@ namespace PckStudio.Rendering
armorTexture.SetTexture(Resources.armor);
GLErrorCheck();
capeTexture = new Texture2D(0);
capeTexture = new Texture2D();
capeTexture.PixelFormat = OpenTK.Graphics.OpenGL.PixelFormat.Bgra;
capeTexture.InternalPixelFormat = PixelInternalFormat.Rgba8;
capeTexture.MinFilter = TextureMinFilter.Nearest;
@@ -420,7 +420,7 @@ namespace PckStudio.Rendering
capeTexture.WrapT = TextureWrapMode.Repeat;
GLErrorCheck();
skinTexture = new Texture2D(0);
skinTexture = new Texture2D();
skinTexture.PixelFormat = OpenTK.Graphics.OpenGL.PixelFormat.Bgra;
skinTexture.InternalPixelFormat = PixelInternalFormat.Rgba8;
skinTexture.MinFilter = TextureMinFilter.Nearest;
@@ -463,12 +463,12 @@ namespace PckStudio.Rendering
var skyboxShader = ShaderProgram.Create(Resources.skyboxVertexShader, Resources.skyboxFragmentShader);
skyboxShader.Bind();
skyboxShader.SetUniform1("skybox", 1);
skyboxShader.SetUniform1("skybox", 0);
skyboxShader.SetUniform1("brightness", 0.8f);
skyboxShader.Validate();
AddShader("SkyboxShader", skyboxShader);
_skyboxTexture = new CubeTexture(1);
_skyboxTexture = new CubeTexture();
_skyboxTexture.InternalPixelFormat = PixelInternalFormat.Rgb8;
_skyboxTexture.PixelFormat = OpenTK.Graphics.OpenGL.PixelFormat.Bgra;
_skyboxTexture.MinFilter = TextureMinFilter.Linear;

View File

@@ -12,9 +12,8 @@ namespace PckStudio.Rendering.Texture
{
internal class CubeTexture : Texture
{
public CubeTexture(int slot) : base(TextureTarget.TextureCubeMap)
public CubeTexture() : base(TextureTarget.TextureCubeMap)
{
Slot = slot;
}
public override void SetTexture(Image image)

View File

@@ -65,17 +65,6 @@ namespace PckStudio.Rendering.Texture
}
}
public int Slot
{
get => _slot;
set
{
Debug.Assert(value >= 0 || value < 32, "Slot is out of range");
_slot = MathHelper.Clamp(value, 0, 31);
}
}
private int _slot = 0;
private TextureMinFilter minFilter;
private TextureMagFilter magFilter;
private TextureWrapMode wrapS;
@@ -93,9 +82,9 @@ namespace PckStudio.Rendering.Texture
throw new NotImplementedException();
}
public void Bind()
public void Bind(int slot = 0)
{
GL.ActiveTexture(TextureUnit.Texture0 + Slot);
GL.ActiveTexture(TextureUnit.Texture0 + slot);
GL.BindTexture(Target, _id);
}

View File

@@ -9,9 +9,8 @@ namespace PckStudio.Rendering.Texture
{
internal class Texture2D : Texture
{
public Texture2D(int slot) : base(TextureTarget.Texture2D)
public Texture2D() : base(TextureTarget.Texture2D)
{
Slot = slot;
}
public void SetSize(Size size)