Use glVertexAttrib only in debug view
This commit is contained in:
parent
62e0effed6
commit
52b19dd83a
@ -1517,6 +1517,10 @@ void drawNormal()
|
||||
{
|
||||
for (unsigned k = 0; k < p.second[j].second.size(); k++)
|
||||
{
|
||||
// Make sure tangents and joints are not drawn undefined
|
||||
glVertexAttrib4f(5, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
glVertexAttribI4i(6, 0, 0, 0, 0);
|
||||
glVertexAttrib4f(7, 0.0f, 0.0f, 0.0f, 0.0f);
|
||||
p.second[j].second[k].first->draw(DCT_NORMAL,
|
||||
-1/*material_id*/);
|
||||
}
|
||||
|
@ -176,8 +176,7 @@ void SPMeshBuffer::uploadGLMesh()
|
||||
std::get<2>(m_stk_material[0])->getShaderName() == "normalmap" &&
|
||||
CVS->isDefferedEnabled();
|
||||
const unsigned pitch = 48 - (use_tangents ? 0 : 4) - (use_2_uv ? 0 : 4) -
|
||||
(m_skinned ? 0 : 16) - (m_vertex_color ? 0 : 4) +
|
||||
(CVS->useArrayTextures() ? 12 :
|
||||
(m_skinned ? 0 : 16) + (CVS->useArrayTextures() ? 12 :
|
||||
CVS->isARBBindlessTextureUsable() ? 48 : 0);
|
||||
m_pitch = pitch;
|
||||
|
||||
@ -204,8 +203,6 @@ void SPMeshBuffer::uploadGLMesh()
|
||||
memcpy(ptr + v_size + offset, &m_vertices[i].m_normal, 12);
|
||||
offset += 4;
|
||||
|
||||
if (m_vertex_color)
|
||||
{
|
||||
video::SColor vc = m_vertices[i].m_color;
|
||||
if (CVS->isDefferedEnabled() ||
|
||||
CVS->isARBSRGBFramebufferUsable())
|
||||
@ -217,7 +214,7 @@ void SPMeshBuffer::uploadGLMesh()
|
||||
}
|
||||
memcpy(ptr + v_size + offset, &vc, 4);
|
||||
offset += 4;
|
||||
}
|
||||
|
||||
memcpy(ptr + v_size + offset, &m_vertices[i].m_all_uvs[0], 4);
|
||||
offset += 4;
|
||||
if (use_2_uv)
|
||||
@ -317,6 +314,7 @@ void SPMeshBuffer::recreateVAO(unsigned i)
|
||||
glEnableVertexAttribArray(0);
|
||||
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, pitch, (void*)offset);
|
||||
offset += 12;
|
||||
|
||||
// Normal, if 10bit vector normalization is wrongly done by drivers, use
|
||||
// original value and normalize ourselves in shader
|
||||
glEnableVertexAttribArray(1);
|
||||
@ -325,23 +323,13 @@ void SPMeshBuffer::recreateVAO(unsigned i)
|
||||
(GraphicsRestrictions::GR_10BIT_VECTOR) ? GL_FALSE : GL_TRUE, pitch,
|
||||
(void*)offset);
|
||||
offset += 4;
|
||||
|
||||
// Vertex color
|
||||
if (m_vertex_color)
|
||||
{
|
||||
glEnableVertexAttribArray(2);
|
||||
glVertexAttribPointer(2, 4, GL_UNSIGNED_BYTE, GL_TRUE, pitch,
|
||||
(void*)offset);
|
||||
offset += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
glDisableVertexAttribArray(2);
|
||||
#ifdef USE_GLES2
|
||||
glVertexAttrib4f(2, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
#else
|
||||
glVertexAttrib4Nub(2, 255, 255, 255, 255);
|
||||
#endif
|
||||
}
|
||||
|
||||
// 1st texture coordinates
|
||||
glEnableVertexAttribArray(3);
|
||||
glVertexAttribPointer(3, 2, GL_HALF_FLOAT, GL_FALSE, pitch, (void*)offset);
|
||||
@ -354,6 +342,11 @@ void SPMeshBuffer::recreateVAO(unsigned i)
|
||||
(void*)offset);
|
||||
offset += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
glDisableVertexAttribArray(4);
|
||||
}
|
||||
|
||||
if (use_tangents)
|
||||
{
|
||||
// Tangent and bi-tanget sign
|
||||
@ -364,6 +357,11 @@ void SPMeshBuffer::recreateVAO(unsigned i)
|
||||
pitch, (void*)offset);
|
||||
offset += 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
glDisableVertexAttribArray(5);
|
||||
}
|
||||
|
||||
if (m_skinned)
|
||||
{
|
||||
// 4 Joint indices
|
||||
@ -376,6 +374,12 @@ void SPMeshBuffer::recreateVAO(unsigned i)
|
||||
(void*)offset);
|
||||
offset += 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
glDisableVertexAttribArray(6);
|
||||
glDisableVertexAttribArray(7);
|
||||
}
|
||||
|
||||
if (CVS->useArrayTextures())
|
||||
{
|
||||
// uvec4 + uvec2 for 6 texture array indices
|
||||
@ -385,6 +389,7 @@ void SPMeshBuffer::recreateVAO(unsigned i)
|
||||
glEnableVertexAttribArray(14);
|
||||
glVertexAttribIPointer(14, 2, GL_UNSIGNED_SHORT, pitch, (void*)offset);
|
||||
offset += 4;
|
||||
glDisableVertexAttribArray(15);
|
||||
}
|
||||
else if (CVS->isARBBindlessTextureUsable())
|
||||
{
|
||||
@ -398,6 +403,13 @@ void SPMeshBuffer::recreateVAO(unsigned i)
|
||||
glEnableVertexAttribArray(15);
|
||||
glVertexAttribIPointer(15, 4, GL_UNSIGNED_INT, pitch, (void*)offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
glDisableVertexAttribArray(13);
|
||||
glDisableVertexAttribArray(14);
|
||||
glDisableVertexAttribArray(15);
|
||||
}
|
||||
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_ibo);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, m_ins_array[i]);
|
||||
// Origin
|
||||
|
@ -78,13 +78,11 @@ private:
|
||||
|
||||
bool m_skinned;
|
||||
|
||||
const bool m_vertex_color;
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
bool initTexture();
|
||||
|
||||
public:
|
||||
SPMeshBuffer(bool vertex_color = true) : m_vertex_color(vertex_color)
|
||||
SPMeshBuffer()
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("SMeshBuffer");
|
||||
|
@ -277,7 +277,7 @@ void SPMeshLoader::decompressSPM(irr::io::IReadFile* spm,
|
||||
assert(indices_count != 0);
|
||||
|
||||
using namespace SP;
|
||||
SPMeshBuffer* mb = new SPMeshBuffer(read_vcolor);
|
||||
SPMeshBuffer* mb = new SPMeshBuffer();
|
||||
static_cast<SPMesh*>(m_mesh)->m_buffer.push_back(mb);
|
||||
const unsigned idx_size = vertices_count > 255 ? 2 : 1;
|
||||
for (unsigned i = 0; i < vertices_count; i++)
|
||||
|
@ -249,7 +249,7 @@ void Graph::createMeshSP(bool show_invisible, bool enable_transparency,
|
||||
#ifndef SERVER_ONLY
|
||||
|
||||
SP::SPMesh* spm = new SP::SPMesh();
|
||||
SP::SPMeshBuffer* spmb = new SP::SPMeshBuffer(true/*vertex_color*/);
|
||||
SP::SPMeshBuffer* spmb = new SP::SPMeshBuffer();
|
||||
m_mesh = spm;
|
||||
m_mesh_buffer = spmb;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user