Allow texture to be NULL.
Some checks failed
Build Dusk / run-tests (push) Failing after 14s
Build Dusk / build-linux (push) Failing after 20s
Build Dusk / build-psp (push) Failing after 16s
Build Dusk / build-gamecube (push) Failing after 18s
Build Dusk / build-wii (push) Failing after 19s

This commit is contained in:
2026-03-27 13:46:18 -05:00
parent 933949cc19
commit d91808487f
5 changed files with 23 additions and 29 deletions

View File

@@ -39,7 +39,6 @@ errorret_t shaderSetTexture(
) { ) {
assertNotNull(shader, "Shader cannot be null"); assertNotNull(shader, "Shader cannot be null");
assertStrLenMin(name, 1, "Uniform name cannot be empty"); assertStrLenMin(name, 1, "Uniform name cannot be empty");
assertNotNull(texture, "Texture cannot be null");
errorChain(shaderSetTexturePlatform(shader, name, texture)); errorChain(shaderSetTexturePlatform(shader, name, texture));
errorOk(); errorOk();
} }

View File

@@ -33,9 +33,6 @@ errorret_t displayOpenGLInit(void) {
errorChain(errorGLCheck()); errorChain(errorGLCheck());
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
errorChain(errorGLCheck()); errorChain(errorGLCheck());
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
errorOk(); errorOk();
} }

View File

@@ -141,13 +141,13 @@ errorret_t meshDrawGL(
MESH_VERTEX_UV_SIZE, MESH_VERTEX_UV_SIZE,
GL_FLOAT, GL_FLOAT,
stride, stride,
(const GLvoid*)&mesh->vertices[offset].uv (const GLvoid*)&mesh->vertices[offset].uv[0]
); );
glVertexPointer( glVertexPointer(
MESH_VERTEX_POS_SIZE, MESH_VERTEX_POS_SIZE,
GL_FLOAT, GL_FLOAT,
stride, stride,
(const GLvoid*)&mesh->vertices[offset].pos (const GLvoid*)&mesh->vertices[offset].pos[0]
); );
// Shader may have model matrix here // Shader may have model matrix here
@@ -155,7 +155,8 @@ errorret_t meshDrawGL(
errorChain(shaderLegacyMatrixUpdate()); errorChain(shaderLegacyMatrixUpdate());
#endif #endif
glDrawArrays(mesh->primitiveType, offset, count); // glDrawArrays(mesh->primitiveType, offset, count);
glDrawArrays(mesh->primitiveType, 0, count);
errorChain(errorGLCheck()); errorChain(errorGLCheck());
#else #else
// Modern VAO/VBO rendering // Modern VAO/VBO rendering
@@ -183,5 +184,6 @@ errorret_t meshDisposeGL(meshgl_t *mesh) {
glDeleteVertexArrays(1, &mesh->vaoId); glDeleteVertexArrays(1, &mesh->vaoId);
errorChain(errorGLCheck()); errorChain(errorGLCheck());
#endif #endif
errorOk(); errorOk();
} }

View File

@@ -209,15 +209,31 @@ errorret_t shaderSetTextureGL(
texture_t *texture texture_t *texture
) { ) {
assertNotNull(shader, "Shader cannot be null"); assertNotNull(shader, "Shader cannot be null");
assertNotNull(texture, "Texture cannot be null");
assertStrLenMin(name, 1, "Uniform name cannot be empty"); assertStrLenMin(name, 1, "Uniform name cannot be empty");
#ifdef DUSK_OPENGL_LEGACY #ifdef DUSK_OPENGL_LEGACY
if(texture == NULL) {
glDisable(GL_TEXTURE_2D);
errorChain(errorGLCheck());
errorOk();
}
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
errorChain(errorGLCheck());
glBindTexture(GL_TEXTURE_2D, texture->id); glBindTexture(GL_TEXTURE_2D, texture->id);
errorChain(errorGLCheck());
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
errorChain(errorGLCheck());
#else #else
if(texture == NULL) {
glActiveTexture(GL_TEXTURE0);
errorChain(errorGLCheck());
glBindTexture(GL_TEXTURE_2D, 0);
errorChain(errorGLCheck());
errorOk();
}
GLint location; GLint location;
errorChain(shaderParamGetLocationGL(shader, name, &location)); errorChain(shaderParamGetLocationGL(shader, name, &location));
@@ -253,27 +269,6 @@ errorret_t shaderSetTextureGL(
errorOk(); errorOk();
} }
// errorret_t shaderSetColorGL(
// shadergl_t *shader,
// const char_t *name,
// color_t color
// ) {
// assertNotNull(shader, "Shader cannot be null");
// assertStrLenMin(name, 1, "Uniform name cannot be empty");
// #ifdef DUSK_OPENGL_LEGACY
// assertUnreachable("Cannot set colors on legacy opengl.");
// #else
// GLint location;
// errorChain(shaderParamGetLocationGL(shader, name, &location));
// glUniform4f(location, color.r, color.g, color.b, color.a);
// errorChain(errorGLCheck());
// #endif
// errorOk();
// }
errorret_t shaderBindGL(shadergl_t *shader) { errorret_t shaderBindGL(shadergl_t *shader) {
#ifdef DUSK_OPENGL_LEGACY #ifdef DUSK_OPENGL_LEGACY
assertNotNull(shader, "Cannot bind a null shader."); assertNotNull(shader, "Cannot bind a null shader.");

View File

@@ -52,6 +52,7 @@ errorret_t displaySDL2Init(void) {
errorChain(errorGLCheck()); errorChain(errorGLCheck());
SDL_GL_SetSwapInterval(1); SDL_GL_SetSwapInterval(1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
errorChain(errorGLCheck()); errorChain(errorGLCheck());
errorChain(displayOpenGLInit()); errorChain(displayOpenGLInit());