Rotating multi-textured cube + alpha fix.

This commit is contained in:
2024-04-04 16:06:50 -04:00
parent 413dc50205
commit 5f3d50d004
7 changed files with 20 additions and 4 deletions

BIN
assets/textures/multi/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
assets/textures/multi/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
assets/textures/multi/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -18,7 +18,9 @@ void Cube::pre_render() {
moby->velAngle = moby->lAngle();
velAngle = rAngle();
}
angle.x = angle.x + 18*engine->frameDelta;
angle.y = angle.y + 18*engine->frameDelta;
angle.z = angle.z + 18*engine->frameDelta;
}
void Cube::update(float elapsed) {

View File

@@ -212,8 +212,22 @@ void Entity::render() {
glBindBuffer(GL_ARRAY_BUFFER, getGeometry()->tbo);
glTexCoordPointer(2, GL_FLOAT, 0, nullptr);
}
//Mode for every other unit.
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD);
//Mode for every other unit. We basically "add" each subsequent texture to the previous one like a stack.
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_ADD); //RGB
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_ADD); //ALPHA
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA);
i++;
}

View File

@@ -3,7 +3,7 @@
#include <engine/engine.h>
void Texture::load(const char* file, bool storeOnTextureList) {
id = SOIL_load_OGL_texture(file, SOIL_LOAD_RGB, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y);
id = SOIL_load_OGL_texture(file, SOIL_LOAD_RGBA, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y);
//If we can't load the missing texture
if (file == "assets/textures/missing.png" && id == 0) {
engine->setError(ENGINE_ERROR_CODE::TEXTURE_NOT_FOUND, true);