//----------------------------------------------------------------------------------- void Renderer::DrawVertexArray(const Vertex_PCT* vertexes, int numVertexes, DrawMode drawMode /*= DrawMode::QUADS*/) { if (numVertexes == 0) { return; } MeshBuilder builder; builder.Begin(); for (int i = 0; i < numVertexes; ++i) { builder.SetColor(vertexes[i].color); builder.SetUV(vertexes[i].texCoords); builder.SetTBN(Vector3::ZERO, Vector3::ZERO, Vector3::ZERO); builder.AddVertex(vertexes[i].pos); builder.AddIndex(i); } builder.End(); Mesh* mesh = new Mesh(); builder.CopyToMesh(mesh, &Vertex_PCUTB::Copy, sizeof(Vertex_PCUTB), &Vertex_PCUTB::BindMeshToVAO); mesh->m_drawMode = drawMode; MeshRenderer* thingToRender = new MeshRenderer(mesh, m_defaultMaterial); m_defaultMaterial->SetMatrices(Matrix4x4::IDENTITY, m_viewStack.GetTop(), m_projStack.GetTop()); GL_CHECK_ERROR(); thingToRender->Render(); delete mesh; }
//----------------------------------------------------------------------------------- void Renderer::DrawVertexArray(const Vertex_PCT* vertexes, int numVertexes, DrawMode drawMode /*= QUADS*/, Texture* texture /*= nullptr*/) { // if (!texture) // { // texture = m_defaultTexture; // } // BindTexture(*texture); // glEnableClientState(GL_VERTEX_ARRAY); // glEnableClientState(GL_COLOR_ARRAY); // glEnableClientState(GL_TEXTURE_COORD_ARRAY); // // glVertexPointer(3, GL_FLOAT, sizeof(Vertex_PCT), &vertexes[0].pos); // glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Vertex_PCT), &vertexes[0].color); // glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex_PCT), &vertexes[0].texCoords); // // glDrawArrays(GetDrawMode(drawMode), 0, numVertexes); // // glDisableClientState(GL_VERTEX_ARRAY); // glDisableClientState(GL_COLOR_ARRAY); // glDisableClientState(GL_TEXTURE_COORD_ARRAY); // UnbindTexture(); if (numVertexes == 0) { return; } MeshBuilder builder; builder.Begin(); for (int i = 0; i < numVertexes; ++i) { builder.SetColor(vertexes[i].color); builder.SetUV(vertexes[i].texCoords); builder.SetTBN(Vector3::ZERO, Vector3::ZERO, Vector3::ZERO); builder.AddVertex(vertexes[i].pos); builder.AddIndex(i); } builder.End(); Mesh* mesh = new Mesh(); builder.CopyToMesh(mesh, &Vertex_PCUTB::Copy); mesh->m_drawMode = drawMode; MeshRenderer thingToRender = MeshRenderer(mesh, m_defaultMaterial); m_defaultMaterial->SetMatrices(Matrix4x4::IDENTITY, m_viewStack.GetTop(), m_projStack.GetTop()); GL_CHECK_ERROR(); thingToRender.Render(); delete mesh; }
//----------------------------------------------------------------------------------- void Renderer::DrawVertexArrayModern(const Vertex_PCT* vertexes, int numVertexes, Renderer::DrawMode drawMode /*= QUADS*/, Texture* texture /*= nullptr*/) { MeshBuilder builder; builder.Begin(); for (int i = 0; i < numVertexes; ++i) { builder.SetColor(vertexes[i].color); builder.SetUV(vertexes[i].texCoords); builder.SetTBN(Vector3::ZERO, Vector3::ZERO, Vector3::ZERO); builder.AddVertex(vertexes[i].pos); builder.AddIndex(i); } builder.End(); Mesh* mesh = new Mesh(); builder.CopyToMesh(mesh, &Vertex_PCUTB::Copy); mesh->m_drawMode = drawMode; MeshRenderer thingToRender = MeshRenderer(mesh, m_defaultMaterial); m_defaultMaterial->SetMatrices(Matrix4x4::IDENTITY, m_viewStack.GetTop(), m_projStack.GetTop()); GL_CHECK_ERROR(); thingToRender.Render(); delete mesh; }