reset glEnableClientState befor every draw
should be done with VAO, but atm, this is not possible :-(
this also partial revert the fix in fb92c338af
(activating texture0 globally).
Signed-off-by: Ryan Houdek <Sonicadvance1@gmail.com>
This commit is contained in:
parent
888b5fb061
commit
6864b40e26
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
#include "FramebufferManager.h"
|
#include "FramebufferManager.h"
|
||||||
|
#include "VertexShaderGen.h"
|
||||||
|
|
||||||
#include "TextureConverter.h"
|
#include "TextureConverter.h"
|
||||||
#include "Render.h"
|
#include "Render.h"
|
||||||
|
@ -324,6 +325,22 @@ void XFBSource::Draw(const MathUtil::Rectangle<float> &sourcerc,
|
||||||
1.0f, 0.0f
|
1.0f, 0.0f
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// disable all pointer, TODO: use VAO
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_POSMTX_ATTRIB);
|
||||||
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM1_ATTRIB);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM2_ATTRIB);
|
||||||
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
|
glDisableClientState(GL_SECONDARY_COLOR_ARRAY);
|
||||||
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
glClientActiveTexture(GL_TEXTURE1);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
for(int i=2; i<8; i++) {
|
||||||
|
glClientActiveTexture(GL_TEXTURE0 + i);
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
glVertexPointer(2, GL_FLOAT, 0, vtx1);
|
glVertexPointer(2, GL_FLOAT, 0, vtx1);
|
||||||
glClientActiveTexture(GL_TEXTURE0);
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
|
|
|
@ -27,8 +27,9 @@
|
||||||
|
|
||||||
#define COMPILED_CODE_SIZE 4096
|
#define COMPILED_CODE_SIZE 4096
|
||||||
|
|
||||||
// TODO: this guy is never initialized
|
// TODO: Use this again for performance, but without VAO we never know exactly the last configuration
|
||||||
u32 s_prevcomponents; // previous state set
|
static u32 s_prevcomponents; // previous state set
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#ifdef _M_IX86
|
#ifdef _M_IX86
|
||||||
|
@ -64,7 +65,6 @@ public:
|
||||||
|
|
||||||
virtual void Initialize(const PortableVertexDeclaration &_vtx_decl);
|
virtual void Initialize(const PortableVertexDeclaration &_vtx_decl);
|
||||||
virtual void SetupVertexPointers();
|
virtual void SetupVertexPointers();
|
||||||
virtual void EnableComponents(u32 components);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace OGL
|
namespace OGL
|
||||||
|
@ -219,34 +219,32 @@ void GLVertexFormat::SetupVertexPointers() {
|
||||||
glVertexAttribPointer(SHADER_POSMTX_ATTRIB, 4, GL_UNSIGNED_BYTE, GL_FALSE, vtx_decl.stride, (void *)(VertexManager::s_pBaseBufferPointer + vtx_decl.posmtx_offset));
|
glVertexAttribPointer(SHADER_POSMTX_ATTRIB, 4, GL_UNSIGNED_BYTE, GL_FALSE, vtx_decl.stride, (void *)(VertexManager::s_pBaseBufferPointer + vtx_decl.posmtx_offset));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
void GLVertexFormat::EnableComponents(u32 components)
|
// if (s_prevcomponents != m_components)
|
||||||
{
|
|
||||||
if (s_prevcomponents != components)
|
|
||||||
{
|
{
|
||||||
VertexManager::Flush();
|
// vertices
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
|
||||||
// matrices
|
// matrices
|
||||||
if ((components & VB_HAS_POSMTXIDX) != (s_prevcomponents & VB_HAS_POSMTXIDX))
|
// if ((m_components & VB_HAS_POSMTXIDX) != (s_prevcomponents & VB_HAS_POSMTXIDX))
|
||||||
{
|
{
|
||||||
if (components & VB_HAS_POSMTXIDX)
|
if (m_components & VB_HAS_POSMTXIDX)
|
||||||
glEnableVertexAttribArray(SHADER_POSMTX_ATTRIB);
|
glEnableVertexAttribArray(SHADER_POSMTX_ATTRIB);
|
||||||
else
|
else
|
||||||
glDisableVertexAttribArray(SHADER_POSMTX_ATTRIB);
|
glDisableVertexAttribArray(SHADER_POSMTX_ATTRIB);
|
||||||
}
|
}
|
||||||
|
|
||||||
// normals
|
// normals
|
||||||
if ((components & VB_HAS_NRM0) != (s_prevcomponents & VB_HAS_NRM0))
|
// if ((m_components & VB_HAS_NRM0) != (s_prevcomponents & VB_HAS_NRM0))
|
||||||
{
|
{
|
||||||
if (components & VB_HAS_NRM0)
|
if (m_components & VB_HAS_NRM0)
|
||||||
glEnableClientState(GL_NORMAL_ARRAY);
|
glEnableClientState(GL_NORMAL_ARRAY);
|
||||||
else
|
else
|
||||||
glDisableClientState(GL_NORMAL_ARRAY);
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
}
|
}
|
||||||
if ((components & VB_HAS_NRM1) != (s_prevcomponents & VB_HAS_NRM1))
|
// if ((m_components & VB_HAS_NRM1) != (s_prevcomponents & VB_HAS_NRM1))
|
||||||
{
|
{
|
||||||
if (components & VB_HAS_NRM1) {
|
if (m_components & VB_HAS_NRM1) {
|
||||||
glEnableVertexAttribArray(SHADER_NORM1_ATTRIB);
|
glEnableVertexAttribArray(SHADER_NORM1_ATTRIB);
|
||||||
glEnableVertexAttribArray(SHADER_NORM2_ATTRIB);
|
glEnableVertexAttribArray(SHADER_NORM2_ATTRIB);
|
||||||
}
|
}
|
||||||
|
@ -259,9 +257,9 @@ void GLVertexFormat::EnableComponents(u32 components)
|
||||||
// color
|
// color
|
||||||
for (int i = 0; i < 2; ++i)
|
for (int i = 0; i < 2; ++i)
|
||||||
{
|
{
|
||||||
if ((components & (VB_HAS_COL0 << i)) != (s_prevcomponents & (VB_HAS_COL0 << i)))
|
// if ((m_components & (VB_HAS_COL0 << i)) != (s_prevcomponents & (VB_HAS_COL0 << i)))
|
||||||
{
|
{
|
||||||
if (components & (VB_HAS_COL0 << i))
|
if (m_components & (VB_HAS_COL0 << i))
|
||||||
glEnableClientState(i ? GL_SECONDARY_COLOR_ARRAY : GL_COLOR_ARRAY);
|
glEnableClientState(i ? GL_SECONDARY_COLOR_ARRAY : GL_COLOR_ARRAY);
|
||||||
else
|
else
|
||||||
glDisableClientState(i ? GL_SECONDARY_COLOR_ARRAY : GL_COLOR_ARRAY);
|
glDisableClientState(i ? GL_SECONDARY_COLOR_ARRAY : GL_COLOR_ARRAY);
|
||||||
|
@ -271,12 +269,16 @@ void GLVertexFormat::EnableComponents(u32 components)
|
||||||
// tex
|
// tex
|
||||||
for (int i = 0; i < 8; ++i)
|
for (int i = 0; i < 8; ++i)
|
||||||
{
|
{
|
||||||
if ((components & (VB_HAS_UV0 << i)) != (s_prevcomponents & (VB_HAS_UV0 << i)))
|
// if ((m_components & (VB_HAS_UV0 << i)) != (s_prevcomponents & (VB_HAS_UV0 << i)))
|
||||||
{
|
{
|
||||||
glClientActiveTexture(GL_TEXTURE0 + i);
|
glClientActiveTexture(GL_TEXTURE0 + i);
|
||||||
|
if (m_components & (VB_HAS_UV0 << i))
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
else
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s_prevcomponents = components;
|
s_prevcomponents = m_components;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -474,7 +474,6 @@ Renderer::Renderer()
|
||||||
glBlendColorEXT(0, 0, 0, 0.5f);
|
glBlendColorEXT(0, 0, 0, 0.5f);
|
||||||
glClearDepth(1.0f);
|
glClearDepth(1.0f);
|
||||||
|
|
||||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
|
||||||
// legacy multitexturing: select texture channel only.
|
// legacy multitexturing: select texture channel only.
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
glClientActiveTexture(GL_TEXTURE0);
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
|
@ -578,6 +577,19 @@ void Renderer::DrawDebugInfo()
|
||||||
RectPoints[a * 16 + 15] = y2;
|
RectPoints[a * 16 + 15] = y2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// disable all pointer, TODO: use VAO
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_POSMTX_ATTRIB);
|
||||||
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM1_ATTRIB);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM2_ATTRIB);
|
||||||
|
glEnableClientState(GL_COLOR_ARRAY);
|
||||||
|
glDisableClientState(GL_SECONDARY_COLOR_ARRAY);
|
||||||
|
for(int i=0; i<8; i++) {
|
||||||
|
glClientActiveTexture(GL_TEXTURE0 + i);
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
glColorPointer (3, GL_FLOAT, 0, Colours);
|
glColorPointer (3, GL_FLOAT, 0, Colours);
|
||||||
glVertexPointer(2, GL_FLOAT, 0, RectPoints);
|
glVertexPointer(2, GL_FLOAT, 0, RectPoints);
|
||||||
glDrawArrays(GL_LINE_STRIP, 0, stats.efb_regions.size() * 8);
|
glDrawArrays(GL_LINE_STRIP, 0, stats.efb_regions.size() * 8);
|
||||||
|
@ -1159,14 +1171,29 @@ void Renderer::Swap(u32 xfbAddr, FieldType field, u32 fbWidth, u32 fbHeight,cons
|
||||||
1.0f, 1.0f,
|
1.0f, 1.0f,
|
||||||
1.0f, 0.0f
|
1.0f, 0.0f
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// disable all pointer, TODO: use VAO
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_POSMTX_ATTRIB);
|
||||||
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM1_ATTRIB);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM2_ATTRIB);
|
||||||
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
|
glDisableClientState(GL_SECONDARY_COLOR_ARRAY);
|
||||||
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
for(int i=1; i<8; i++) {
|
||||||
|
glClientActiveTexture(GL_TEXTURE0 + i);
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
if (applyShader)
|
if (applyShader)
|
||||||
{
|
{
|
||||||
glClientActiveTexture(GL_TEXTURE1);
|
glClientActiveTexture(GL_TEXTURE1);
|
||||||
glTexCoordPointer(2, GL_FLOAT, 0, tex2);
|
glTexCoordPointer(2, GL_FLOAT, 0, tex2);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
glVertexPointer(3, GL_FLOAT, 0, vtx1);
|
glVertexPointer(3, GL_FLOAT, 0, vtx1);
|
||||||
glClientActiveTexture(GL_TEXTURE0);
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
glTexCoordPointer(2, GL_FLOAT, 0, tex1);
|
glTexCoordPointer(2, GL_FLOAT, 0, tex1);
|
||||||
|
|
|
@ -319,6 +319,21 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo
|
||||||
1.f, 1.f
|
1.f, 1.f
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// disable all pointer, TODO: use VAO
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_POSMTX_ATTRIB);
|
||||||
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM1_ATTRIB);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM2_ATTRIB);
|
||||||
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
|
glDisableClientState(GL_SECONDARY_COLOR_ARRAY);
|
||||||
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
for(int i=1; i<8; i++) {
|
||||||
|
glClientActiveTexture(GL_TEXTURE0 + i);
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
glClientActiveTexture(GL_TEXTURE0);
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
glTexCoordPointer(2, GL_FLOAT, 0, tex1);
|
glTexCoordPointer(2, GL_FLOAT, 0, tex1);
|
||||||
glVertexPointer(2, GL_FLOAT, 0, vtx1);
|
glVertexPointer(2, GL_FLOAT, 0, vtx1);
|
||||||
|
|
|
@ -228,6 +228,21 @@ void EncodeToRamUsingShader(FRAGMENTSHADER& shader, GLuint srcTexture, const Tar
|
||||||
1.f, -1.f
|
1.f, -1.f
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// disable all pointer, TODO: use VAO
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_POSMTX_ATTRIB);
|
||||||
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM1_ATTRIB);
|
||||||
|
glDisableVertexAttribArray(SHADER_NORM2_ATTRIB);
|
||||||
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
|
glDisableClientState(GL_SECONDARY_COLOR_ARRAY);
|
||||||
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
|
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
for(int i=1; i<8; i++) {
|
||||||
|
glClientActiveTexture(GL_TEXTURE0 + i);
|
||||||
|
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
glClientActiveTexture(GL_TEXTURE0);
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
glTexCoordPointer(2, GL_FLOAT, 0, tex1);
|
glTexCoordPointer(2, GL_FLOAT, 0, tex1);
|
||||||
glVertexPointer(2, GL_FLOAT, 0, vtx1);
|
glVertexPointer(2, GL_FLOAT, 0, vtx1);
|
||||||
|
|
|
@ -64,9 +64,6 @@ VertexManager::VertexManager()
|
||||||
// max_Index_size = MAXIBUFFERSIZE;
|
// max_Index_size = MAXIBUFFERSIZE;
|
||||||
//
|
//
|
||||||
//GL_REPORT_ERRORD();
|
//GL_REPORT_ERRORD();
|
||||||
|
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
|
||||||
GL_REPORT_ERRORD();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VertexManager::CreateDeviceObjects()
|
void VertexManager::CreateDeviceObjects()
|
||||||
|
|
Loading…
Reference in New Issue