Removes Handle from ShaderProgram to use more high-level objects.
Tested By: Stan Differential Revision: https://code.wildfiregames.com/D4403 This was SVN commit r26138.
This commit is contained in:
parent
b9e4c14083
commit
92cf0c784c
@ -165,35 +165,25 @@ public:
|
||||
return Binding((int)fPair.second, index);
|
||||
}
|
||||
|
||||
void BindTexture(texture_id_t id, Handle tex) override
|
||||
{
|
||||
frag_index_pair_t fPair = GetUniformFragmentIndex(id);
|
||||
int index = fPair.first;
|
||||
if (index != -1)
|
||||
{
|
||||
GLuint h;
|
||||
ogl_tex_get_texture_id(tex, &h);
|
||||
glActiveTextureARB(GL_TEXTURE0+index);
|
||||
glBindTexture(fPair.second, h);
|
||||
}
|
||||
}
|
||||
|
||||
void BindTexture(texture_id_t id, GLuint tex) override
|
||||
{
|
||||
frag_index_pair_t fPair = GetUniformFragmentIndex(id);
|
||||
int index = fPair.first;
|
||||
if (index != -1)
|
||||
{
|
||||
glActiveTextureARB(GL_TEXTURE0+index);
|
||||
glActiveTextureARB(GL_TEXTURE0 + index);
|
||||
glBindTexture(fPair.second, tex);
|
||||
}
|
||||
}
|
||||
|
||||
void BindTexture(Binding id, Handle tex) override
|
||||
void BindTexture(Binding id, GLuint tex) override
|
||||
{
|
||||
int index = id.second;
|
||||
if (index != -1)
|
||||
ogl_tex_bind(tex, index);
|
||||
{
|
||||
glActiveTextureARB(GL_TEXTURE0 + index);
|
||||
glBindTexture(id.first, tex);
|
||||
}
|
||||
}
|
||||
|
||||
Binding GetUniformBinding(uniform_id_t id) override
|
||||
@ -537,18 +527,6 @@ public:
|
||||
return Binding((int)it->second.first, it->second.second);
|
||||
}
|
||||
|
||||
void BindTexture(texture_id_t id, Handle tex) override
|
||||
{
|
||||
std::map<CStrIntern, std::pair<GLenum, int> >::iterator it = m_Samplers.find(CStrIntern(id));
|
||||
if (it == m_Samplers.end())
|
||||
return;
|
||||
|
||||
GLuint h;
|
||||
ogl_tex_get_texture_id(tex, &h);
|
||||
glActiveTextureARB(GL_TEXTURE0 + it->second.second);
|
||||
glBindTexture(it->second.first, h);
|
||||
}
|
||||
|
||||
void BindTexture(texture_id_t id, GLuint tex) override
|
||||
{
|
||||
std::map<CStrIntern, std::pair<GLenum, int> >::iterator it = m_Samplers.find(CStrIntern(id));
|
||||
@ -559,15 +537,13 @@ public:
|
||||
glBindTexture(it->second.first, tex);
|
||||
}
|
||||
|
||||
void BindTexture(Binding id, Handle tex) override
|
||||
void BindTexture(Binding id, GLuint tex) override
|
||||
{
|
||||
if (id.second == -1)
|
||||
return;
|
||||
|
||||
GLuint h;
|
||||
ogl_tex_get_texture_id(tex, &h);
|
||||
glActiveTextureARB(GL_TEXTURE0 + id.second);
|
||||
glBindTexture(id.first, h);
|
||||
glBindTexture(id.first, tex);
|
||||
}
|
||||
|
||||
Binding GetUniformBinding(uniform_id_t id) override
|
||||
@ -743,9 +719,18 @@ int CShaderProgram::GetStreamFlags() const
|
||||
return m_StreamFlags;
|
||||
}
|
||||
|
||||
void CShaderProgram::BindTexture(texture_id_t id, CTexturePtr tex)
|
||||
void CShaderProgram::BindTexture(texture_id_t id, const CTexturePtr& tex)
|
||||
{
|
||||
BindTexture(id, tex->GetHandle());
|
||||
GLuint h;
|
||||
ogl_tex_get_texture_id(tex->GetHandle(), &h);
|
||||
BindTexture(id, h);
|
||||
}
|
||||
|
||||
void CShaderProgram::BindTexture(Binding id, const CTexturePtr& tex)
|
||||
{
|
||||
GLuint h;
|
||||
ogl_tex_get_texture_id(tex->GetHandle(), &h);
|
||||
BindTexture(id, h);
|
||||
}
|
||||
|
||||
void CShaderProgram::Uniform(Binding id, int v)
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "graphics/Texture.h"
|
||||
#include "lib/ogl.h"
|
||||
#include "lib/file/vfs/vfs_path.h"
|
||||
#include "lib/res/handle.h"
|
||||
|
||||
#include <map>
|
||||
#include <vector>
|
||||
@ -143,10 +142,10 @@ public:
|
||||
virtual Binding GetTextureBinding(texture_id_t id) = 0;
|
||||
|
||||
// Variants of texture binding:
|
||||
void BindTexture(texture_id_t id, CTexturePtr tex);
|
||||
virtual void BindTexture(texture_id_t id, Handle tex) = 0;
|
||||
void BindTexture(texture_id_t id, const CTexturePtr& tex);
|
||||
void BindTexture(Binding id, const CTexturePtr& tex);
|
||||
virtual void BindTexture(texture_id_t id, GLuint tex) = 0;
|
||||
virtual void BindTexture(Binding id, Handle tex) = 0;
|
||||
virtual void BindTexture(Binding id, GLuint tex) = 0;
|
||||
|
||||
|
||||
virtual Binding GetUniformBinding(uniform_id_t id) = 0;
|
||||
|
@ -216,7 +216,7 @@ void CTerrainTextureEntry::LoadAlphaMaps(const VfsPath& alphaMapType)
|
||||
//
|
||||
// load all textures and store Handle in array
|
||||
//
|
||||
Tex textures[NUM_ALPHA_MAPS] = {0};
|
||||
Tex textures[NUM_ALPHA_MAPS] = {};
|
||||
const VfsPath path = VfsPath("art/textures/terrain/alphamaps") / alphaMapType;
|
||||
|
||||
const wchar_t* fnames[NUM_ALPHA_MAPS] =
|
||||
|
@ -688,7 +688,7 @@ void ShaderModelRenderer::Render(const RenderModifierPtr& modifier, const CShade
|
||||
CTexture* newTex = samp.Sampler.get();
|
||||
if (texBindings[s].Active() && newTex != currentTexs[s])
|
||||
{
|
||||
shader->BindTexture(texBindings[s], newTex->GetHandle());
|
||||
shader->BindTexture(texBindings[s], samp.Sampler);
|
||||
currentTexs[s] = newTex;
|
||||
}
|
||||
}
|
||||
|
@ -551,8 +551,8 @@ void OverlayRenderer::RenderQuadOverlays()
|
||||
|
||||
const QuadBatchKey& maskPair = it->first;
|
||||
|
||||
shader->BindTexture(str_baseTex, maskPair.m_Texture->GetHandle());
|
||||
shader->BindTexture(str_maskTex, maskPair.m_TextureMask->GetHandle());
|
||||
shader->BindTexture(str_baseTex, maskPair.m_Texture);
|
||||
shader->BindTexture(str_maskTex, maskPair.m_TextureMask);
|
||||
|
||||
int streamflags = shader->GetStreamFlags();
|
||||
|
||||
|
@ -44,8 +44,8 @@ void CTexturedLineRData::Render(const SOverlayTexturedLine& line, const CShaderP
|
||||
|
||||
const int streamFlags = shader->GetStreamFlags();
|
||||
|
||||
shader->BindTexture(str_baseTex, line.m_TextureBase->GetHandle());
|
||||
shader->BindTexture(str_maskTex, line.m_TextureMask->GetHandle());
|
||||
shader->BindTexture(str_baseTex, line.m_TextureBase);
|
||||
shader->BindTexture(str_maskTex, line.m_TextureMask);
|
||||
shader->Uniform(str_objectColor, line.m_Color);
|
||||
|
||||
GLsizei stride = sizeof(CTexturedLineRData::SVertex);
|
||||
|
Loading…
Reference in New Issue
Block a user