From 5861fdd4bdc3da0a55a84503cd3d5f61577d4aca Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 29 May 2020 11:48:29 +0200 Subject: [PATCH] - minor cleanup of FHardwareTexture. Inlining of a trivial function and removing dependency on the render state, unbinding the render state should be done elsewhere. --- src/common/rendering/gl/gl_framebuffer.cpp | 2 ++ src/common/rendering/gl/gl_hwtexture.cpp | 10 ++-------- src/common/rendering/gl/gl_hwtexture.h | 22 +++++++++++++++------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/common/rendering/gl/gl_framebuffer.cpp b/src/common/rendering/gl/gl_framebuffer.cpp index 628756b6de..6c5dbb3db7 100644 --- a/src/common/rendering/gl/gl_framebuffer.cpp +++ b/src/common/rendering/gl/gl_framebuffer.cpp @@ -263,6 +263,7 @@ void OpenGLFrameBuffer::Swap() Finish.Unclock(); camtexcount = 0; FHardwareTexture::UnbindAll(); + gl_RenderState.ClearLastMaterial(); mDebug->Update(); } @@ -321,6 +322,7 @@ void OpenGLFrameBuffer::PrecacheMaterial(FMaterial *mat, int translation) } // unbind everything. FHardwareTexture::UnbindAll(); + gl_RenderState.ClearLastMaterial(); } IVertexBuffer *OpenGLFrameBuffer::CreateVertexBuffer() diff --git a/src/common/rendering/gl/gl_hwtexture.cpp b/src/common/rendering/gl/gl_hwtexture.cpp index c27304ee63..31e104cfeb 100644 --- a/src/common/rendering/gl/gl_hwtexture.cpp +++ b/src/common/rendering/gl/gl_hwtexture.cpp @@ -42,14 +42,14 @@ #include "hw_cvars.h" #include "gl_debug.h" #include "gl_renderer.h" -#include "gl_renderstate.h" #include "gl_samplers.h" +#include "gl_hwtexture.h" namespace OpenGLRenderer { -TexFilter_s TexFilter[]={ +TexFilter_s TexFilter[] = { {GL_NEAREST, GL_NEAREST, false}, {GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, true}, {GL_LINEAR, GL_LINEAR, false}, @@ -237,11 +237,6 @@ unsigned int FHardwareTexture::Bind(int texunit, bool needmipmap) return 0; } -unsigned int FHardwareTexture::GetTextureHandle(int translation) -{ - return glTexID; -} - void FHardwareTexture::Unbind(int texunit) { if (lastbound[texunit] != 0) @@ -259,7 +254,6 @@ void FHardwareTexture::UnbindAll() { Unbind(texunit); } - gl_RenderState.ClearLastMaterial(); } //=========================================================================== diff --git a/src/common/rendering/gl/gl_hwtexture.h b/src/common/rendering/gl/gl_hwtexture.h index 41d8ae44aa..1b3cdff2cc 100644 --- a/src/common/rendering/gl/gl_hwtexture.h +++ b/src/common/rendering/gl/gl_hwtexture.h @@ -1,6 +1,10 @@ +#pragma once +class FBitmap; +class FTexture; + +#include "tarray.h" +#include "hw_ihwtexture.h" -#ifndef __GLTEXTURE_H -#define __GLTEXTURE_H #ifdef LoadImage #undef LoadImage @@ -59,14 +63,18 @@ public: void BindToFrameBuffer(int w, int h); unsigned int Bind(int texunit, bool needmipmap); - bool BindOrCreate(FTexture *tex, int texunit, int clampmode, int translation, int flags); + bool BindOrCreate(FTexture* tex, int texunit, int clampmode, int translation, int flags); void AllocateBuffer(int w, int h, int texelsize); - uint8_t *MapBuffer(); + uint8_t* MapBuffer(); - unsigned int CreateTexture(unsigned char * buffer, int w, int h, int texunit, bool mipmap, const char *name); - unsigned int GetTextureHandle(int translation); + unsigned int CreateTexture(unsigned char* buffer, int w, int h, int texunit, bool mipmap, const char* name); + unsigned int GetTextureHandle() + { + return glTexID; + } + + int numChannels() { return glTextureBytes; } }; } -#endif