Renders on PSP but it's inconsistent

This commit is contained in:
2026-04-10 20:59:38 -05:00
parent bb7c41c754
commit f0117b8e6e
9 changed files with 81 additions and 13 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ target_link_libraries(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC target_compile_definitions(${DUSK_LIBRARY_TARGET_NAME} PUBLIC
DUSK_SDL2 DUSK_SDL2
DUSK_OPENGL DUSK_OPENGL
# DUSK_OPENGL_LEGACY DUSK_OPENGL_LEGACY
DUSK_LINUX DUSK_LINUX
DUSK_DISPLAY_SIZE_DYNAMIC DUSK_DISPLAY_SIZE_DYNAMIC
DUSK_DISPLAY_WIDTH_DEFAULT=640 DUSK_DISPLAY_WIDTH_DEFAULT=640
+4
View File
@@ -31,6 +31,10 @@ errorret_t displayInit(void) {
#ifdef displayPlatformInit #ifdef displayPlatformInit
errorChain(displayPlatformInit()); errorChain(displayPlatformInit());
#endif #endif
errorChain(textureInit(
&TEXTURE_WHITE, 4, 4,
TEXTURE_FORMAT_RGBA, (texturedata_t){ .rgbaColors = TEXTURE_WHITE_PIXELS }
));
errorChain(quadInit()); errorChain(quadInit());
errorChain(cubeInit()); errorChain(cubeInit());
errorChain(frameBufferInitBackBuffer()); errorChain(frameBufferInitBackBuffer());
+8
View File
@@ -11,6 +11,14 @@
#include "util/math.h" #include "util/math.h"
#include "display/display.h" #include "display/display.h"
texture_t TEXTURE_WHITE;
color_t TEXTURE_WHITE_PIXELS[4*4] = {
COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE,
COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE,
COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE,
COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE,
};
errorret_t textureInit( errorret_t textureInit(
texture_t *texture, texture_t *texture,
const int32_t width, const int32_t width,
+3
View File
@@ -28,6 +28,9 @@ typedef union texturedata_u {
color_t *rgbaColors; color_t *rgbaColors;
} texturedata_t; } texturedata_t;
extern texture_t TEXTURE_WHITE;
extern color_t TEXTURE_WHITE_PIXELS[4*4];
/** /**
* Initializes a texture. * Initializes a texture.
* *
+6 -2
View File
@@ -82,7 +82,7 @@ errorret_t engineInit(const int32_t argc, const char_t **argv) {
)); ));
shadermaterial_t *mat = entityMaterialGetShaderMaterial(ent1, ent1Mat); shadermaterial_t *mat = entityMaterialGetShaderMaterial(ent1, ent1Mat);
mat->unlit.color = COLOR_WHITE; mat->unlit.color = COLOR_BLACK;
mat->unlit.texture = &TEXTURE; mat->unlit.texture = &TEXTURE;
// EOF // EOF
@@ -102,7 +102,11 @@ errorret_t engineUpdate(void) {
vec3 rotation; vec3 rotation;
entityPositionGetRotation(ent1, ent1Pos, rotation); entityPositionGetRotation(ent1, ent1Pos, rotation);
rotation[1] += 0.01f; #if DUSK_TIME_DYNAMIC
rotation[1] += 2.0f * TIME.dynamicDelta;
#else
rotation[1] += 2.0f * TIME.delta;
#endif
entityPositionSetRotation(ent1, ent1Pos, rotation); entityPositionSetRotation(ent1, ent1Pos, rotation);
uiUpdate(); uiUpdate();
-4
View File
@@ -153,11 +153,7 @@ errorret_t meshDrawGL(
); );
// Shader may have model matrix here // Shader may have model matrix here
#ifdef DUSK_OPENGL_LEGACY
errorChain(shaderLegacyMatrixUpdate()); errorChain(shaderLegacyMatrixUpdate());
#endif
// glDrawArrays(mesh->primitiveType, offset, count);
glDrawArrays(mesh->primitiveType, 0, count); glDrawArrays(mesh->primitiveType, 0, count);
errorChain(errorGLCheck()); errorChain(errorGLCheck());
#else #else
+57 -2
View File
@@ -223,6 +223,9 @@ errorret_t shaderSetTextureGL(
"Only one texture supported in legacy opengl." "Only one texture supported in legacy opengl."
); );
// glActiveTexture(GL_TEXTURE0);
errorChain(errorGLCheck());
if(texture == NULL) { if(texture == NULL) {
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
errorChain(errorGLCheck()); errorChain(errorGLCheck());
@@ -233,9 +236,23 @@ errorret_t shaderSetTextureGL(
errorChain(errorGLCheck()); errorChain(errorGLCheck());
glBindTexture(GL_TEXTURE_2D, texture->id); glBindTexture(GL_TEXTURE_2D, texture->id);
errorChain(errorGLCheck()); errorChain(errorGLCheck());
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
errorChain(errorGLCheck()); errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_PRIMARY_COLOR);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
// errorChain(errorGLCheck());
#else #else
assertNotNull(shader->definition, "Shader definition cannot be null"); assertNotNull(shader->definition, "Shader definition cannot be null");
assertNotNull(shader->definition->setTexture, "Shader cannot do textures."); assertNotNull(shader->definition->setTexture, "Shader cannot do textures.");
@@ -254,8 +271,46 @@ errorret_t shaderSetColorGL(
assertStrLenMin(name, 1, "Uniform name cannot be empty"); assertStrLenMin(name, 1, "Uniform name cannot be empty");
#ifdef DUSK_OPENGL_LEGACY #ifdef DUSK_OPENGL_LEGACY
glColor4ub(color.r, color.g, color.b, color.a); // if(color.a == 0) {
errorChain(errorGLCheck()); // glDisable(GL_TEXTURE_2D);
// errorChain(errorGLCheck());
// errorOk();
// }
// glActiveTexture(GL_TEXTURE1);
// errorChain(errorGLCheck());
// if(color.r == 255 && color.g == 255 && color.b == 255) {
// glDisable(GL_TEXTURE_2D);
// errorChain(errorGLCheck());
// errorOk();
// }
// glEnable(GL_TEXTURE_2D);
// errorChain(errorGLCheck());
// glBindTexture(GL_TEXTURE_2D, TEXTURE_WHITE.id);
// errorChain(errorGLCheck());
// GLfloat tint[4] = {
// ((float_t)color.r) / 255.0f,
// ((float_t)color.g) / 255.0f,
// ((float_t)color.b) / 255.0f,
// ((float_t)color.a) / 255.0f
// };
// glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, tint);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_CONSTANT);
// errorChain(errorGLCheck());
// glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
// errorChain(errorGLCheck());
#else #else
GLint location; GLint location;
errorChain(shaderParamGetLocationGL(shader, name, &location)); errorChain(shaderParamGetLocationGL(shader, name, &location));
-1
View File
@@ -22,7 +22,6 @@ typedef struct {
errorret_t (*setMaterial)(shadergl_t *, const shadermaterial_t *); errorret_t (*setMaterial)(shadergl_t *, const shadermaterial_t *);
#ifdef DUSK_OPENGL_LEGACY #ifdef DUSK_OPENGL_LEGACY
void *nothing;
#else #else
errorret_t (*setTexture)(shadergl_t *, const char_t *, texture_t *); errorret_t (*setTexture)(shadergl_t *, const char_t *, texture_t *);
+1 -2
View File
@@ -10,8 +10,7 @@
#ifdef DUSK_OPENGL_LEGACY #ifdef DUSK_OPENGL_LEGACY
shaderdefinition_t SHADER_UNLIT_DEFINITION = { shaderdefinition_t SHADER_UNLIT_DEFINITION = {
.platform = { 0 }, .setMaterial = shaderUnlitSetMaterial,
.upload = shaderUnlitUpload
}; };
#else #else
errorret_t shaderUnlitSetTextureGL( errorret_t shaderUnlitSetTextureGL(