working on web

This commit is contained in:
Vladislav Khorev committed 2026-02-23 11:45:55 +03:00
1 parent fa3a4c66c9
commit db4254e205
4 files changed
+55 -12

No files matched your search

+28 -4
View File
@@ -895,41 +895,65 @@ namespace ZL {
static const std::string vColor("vColor");
static const std::string vTexCoord("vTexCoord");
static const std::string vPosition("vPosition");
//glBindVertexArray(VertexRenderStruct.vao->getBuffer());
//Check if main thread, check if data is not empty...
// On WebGL (and when not using VAO), vertex attribute arrays must be explicitly
// enabled before drawing. Desktop with VAO can rely on stored state; WebGL cannot.
if (VertexRenderStruct.data.NormalData.size() > 0)
{
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.normalVBO->getBuffer());
VertexAttribPointer3fv(vNormal, 0, NULL);
EnableVertexAttribArray(vNormal);
}
else
{
DisableVertexAttribArray(vNormal);
}
if (VertexRenderStruct.data.TangentData.size() > 0)
{
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.tangentVBO->getBuffer());
VertexAttribPointer3fv(vTangent, 0, NULL);
EnableVertexAttribArray(vTangent);
}
else
{
DisableVertexAttribArray(vTangent);
}
if (VertexRenderStruct.data.BinormalData.size() > 0)
{
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.binormalVBO->getBuffer());
VertexAttribPointer3fv(vBinormal, 0, NULL);
EnableVertexAttribArray(vBinormal);
}
else
{
DisableVertexAttribArray(vBinormal);
}
if (VertexRenderStruct.data.ColorData.size() > 0)
{
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.colorVBO->getBuffer());
VertexAttribPointer3fv(vColor, 0, NULL);
EnableVertexAttribArray(vColor);
}
else
{
DisableVertexAttribArray(vColor);
}
if (VertexRenderStruct.data.TexCoordData.size() > 0)
{
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.texCoordVBO->getBuffer());
VertexAttribPointer2fv(vTexCoord, 0, NULL);
EnableVertexAttribArray(vTexCoord);
}
else
{
DisableVertexAttribArray(vTexCoord);
}
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.positionVBO->getBuffer());
VertexAttribPointer3fv(vPosition, 0, NULL);
EnableVertexAttribArray(vPosition);
glDrawArrays(GL_TRIANGLES, 0, static_cast<GLsizei>(VertexRenderStruct.data.PositionData.size()));
}
void worldToScreenCoordinates(Vector3f objectPos,