Textures are working now

This commit is contained in:
2023-11-19 11:39:48 -06:00
parent 830694ee0a
commit c2fb75df97
9 changed files with 93 additions and 69 deletions

View File

@ -63,21 +63,21 @@ void Texture::setSize(
// }
void Texture::updateTextureProperties() {
auto setWrapMode = [&](GLenum axis, enum TextureWrapMode wm) {
auto setWrapMode = [](GLenum axis, enum TextureWrapMode wm) {
switch(wm) {
case TEXTURE_WRAP_MODE_REPEAT:
case TextureWrapMode::REPEAT:
glTexParameteri(GL_TEXTURE_2D, axis, GL_REPEAT);
break;
case TEXTURE_WRAP_MODE_MIRRORED_REPEAT:
case TextureWrapMode::MIRRORED_REPEAT:
glTexParameteri(GL_TEXTURE_2D, axis, GL_MIRRORED_REPEAT);
break;
case TEXTURE_WRAP_MODE_CLAMP_TO_EDGE:
case TextureWrapMode::CLAMP_TO_EDGE:
glTexParameteri(GL_TEXTURE_2D, axis, GL_CLAMP_TO_EDGE);
break;
case TEXTURE_WRAP_MODE_CLAMP_TO_BORDER:
case TextureWrapMode::CLAMP_TO_BORDER:
glTexParameteri(GL_TEXTURE_2D, axis, GL_CLAMP_TO_BORDER);
break;
@ -90,18 +90,18 @@ void Texture::updateTextureProperties() {
setWrapMode(GL_TEXTURE_WRAP_S, this->wrapModeX);
setWrapMode(GL_TEXTURE_WRAP_T, this->wrapModeY);
auto setFilterMode = [&](
auto setFilterMode = [](
GLenum minMag,
enum TextureFilterMode filter,
enum TextureFilterMode mapFilterMode
) {
switch(filter) {
case TEXTURE_FILTER_MODE_NEAREST: {
case TextureFilterMode::NEAREST: {
glTexParameteri(GL_TEXTURE_2D, minMag, GL_NEAREST);
break;
}
case TEXTURE_FILTER_MODE_LINEAR: {
case TextureFilterMode::LINEAR: {
glTexParameteri(GL_TEXTURE_2D, minMag, GL_LINEAR);
break;
}
@ -126,19 +126,19 @@ void Texture::bufferRaw(const void *data) {
GLenum format;
switch(this->format) {
case TEXTURE_FORMAT_R:
case TextureFormat::R:
format = GL_RED;
break;
case TEXTURE_FORMAT_RG:
case TextureFormat::RG:
format = GL_RG;
break;
case TEXTURE_FORMAT_RGB:
case TextureFormat::RGB:
format = GL_RGB;
break;
case TEXTURE_FORMAT_RGBA:
case TextureFormat::RGBA:
format = GL_RGBA;
break;
@ -148,11 +148,11 @@ void Texture::bufferRaw(const void *data) {
GLenum dataFormat;
switch(this->dataFormat) {
case TEXTURE_DATA_FORMAT_UNSIGNED_BYTE:
case TextureDataFormat::UNSIGNED_BYTE:
dataFormat = GL_UNSIGNED_BYTE;
break;
case TEXTURE_DATA_FORMAT_FLOAT:
case TextureDataFormat::FLOAT:
dataFormat = GL_FLOAT;
break;
@ -174,19 +174,20 @@ void Texture::bufferRaw(const void *data) {
void Texture::buffer(const struct ColorU8 pixels[]) {
assertTrue(
this->dataFormat == TEXTURE_DATA_FORMAT_UNSIGNED_BYTE,
this->dataFormat == TextureDataFormat::UNSIGNED_BYTE,
"Texture data format must be unsigned byte!"
);
this->bufferRaw((void*)pixels);
}
void Texture::buffer(const struct Color pixels[]) {
std::cout << "Correct buffer" << std::endl;
assertTrue(
this->dataFormat == TEXTURE_DATA_FORMAT_FLOAT,
this->dataFormat == TextureDataFormat::FLOAT,
"Texture data format must be float!"
);
assertTrue(
this->format == TEXTURE_FORMAT_RGBA,
this->format == TextureFormat::RGBA,
"Texture format must be RGBA!"
);
this->bufferRaw((void*)pixels);
@ -194,7 +195,7 @@ void Texture::buffer(const struct Color pixels[]) {
void Texture::buffer(const uint8_t pixels[]) {
assertTrue(
this->dataFormat == TEXTURE_DATA_FORMAT_UNSIGNED_BYTE,
this->dataFormat == TextureDataFormat::UNSIGNED_BYTE,
"Texture data format must be unsigned byte!"
);
this->bufferRaw((void*)pixels);