Added reasons to assertions

This commit is contained in:
2023-07-23 10:15:37 -07:00
parent ef6b269141
commit 5b01eb904d
78 changed files with 357 additions and 289 deletions

View File

@ -18,7 +18,7 @@ Texture::Texture() : ITexture() {
}
void Texture::bind(textureslot_t slot) {
assertTrue(this->id != -1);
assertTrue(this->id != -1, "Texture::bind: Texture is not ready!");
glActiveTexture(GL_TEXTURE0 + slot);
glBindTexture(GL_TEXTURE_2D, this->id);
@ -108,7 +108,7 @@ void Texture::updateTextureProperties() {
break;
default:
assertUnreachable();
assertUnreachable("Texture::updateTextureProperties: Unknown wrap mode!");
}
};
@ -156,7 +156,7 @@ void Texture::updateTextureProperties() {
}
default: {
assertUnreachable();
assertUnreachable("Texture::updateTextureProperties: Unknown filter mode!");
}
}
};
@ -166,7 +166,7 @@ void Texture::updateTextureProperties() {
}
void Texture::bufferRaw(void *data) {
assertTrue(this->isReady());
assertTrue(this->isReady(), "Texture::bufferRaw: Texture is not ready!");
GLenum format;
switch(this->format) {
@ -187,7 +187,7 @@ void Texture::bufferRaw(void *data) {
break;
default:
assertUnreachable();
assertUnreachable("Texture::bufferRaw: Unknown texture format!");
}
GLenum dataFormat;
@ -201,7 +201,7 @@ void Texture::bufferRaw(void *data) {
break;
default:
assertUnreachable();
assertUnreachable("Texture::bufferRaw: Unknown texture data format!");
}
glBindTexture(GL_TEXTURE_2D, this->id);
@ -215,18 +215,18 @@ void Texture::bufferRaw(void *data) {
}
void Texture::buffer(struct ColorU8 pixels[]) {
assertTrue(this->dataFormat == TEXTURE_DATA_FORMAT_UNSIGNED_BYTE);
assertTrue(this->dataFormat == TEXTURE_DATA_FORMAT_UNSIGNED_BYTE, "Texture::buffer: Texture data format must be unsigned byte!");
this->bufferRaw((void*)pixels);
}
void Texture::buffer(struct Color pixels[]) {
assertTrue(this->dataFormat == TEXTURE_DATA_FORMAT_FLOAT);
assertTrue(this->format == TEXTURE_FORMAT_RGBA);
assertTrue(this->dataFormat == TEXTURE_DATA_FORMAT_FLOAT, "Texture::buffer: Texture data format must be float!");
assertTrue(this->format == TEXTURE_FORMAT_RGBA, "Texture::buffer: Texture format must be RGBA!");
this->bufferRaw((void*)pixels);
}
void Texture::buffer(uint8_t pixels[]) {
assertTrue(this->dataFormat == TEXTURE_DATA_FORMAT_UNSIGNED_BYTE);
assertTrue(this->dataFormat == TEXTURE_DATA_FORMAT_UNSIGNED_BYTE, "Texture::buffer: Texture data format must be unsigned byte!");
this->bufferRaw((void*)pixels);
}

View File

@ -16,8 +16,8 @@ Texture * TextureRenderTarget::getTexture() {
}
void TextureRenderTarget::setSize(float_t width, float_t height) {
assertTrue(width > 0);
assertTrue(height > 0);
assertTrue(width > 0, "TextureRenderTarget::setSize: Width must be greater than 0!");
assertTrue(height > 0, "TextureRenderTarget::setSize: Height must be greater than 0!");
if(width == this->getWidth() && height == this->getHeight()) return;
@ -50,7 +50,7 @@ void TextureRenderTarget::setSize(float_t width, float_t height) {
// Validate things went correct.
if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
assertUnreachable();
assertUnreachable("TextureRenderTarget::setSize: Framebuffer is not complete!");
}
}

View File

@ -73,7 +73,11 @@ void Mesh::disposeBuffers() {
}
void Mesh::bufferPositions(int32_t pos, glm::vec3 *positions, int32_t len) {
assertNotNull(positions);
assertNotNull(positions, "Mesh::bufferPositions: Positions cannot be null");
assertTrue(pos >= 0 && pos < this->verticeCount, "Mesh::bufferPositions: Position must be within range");
assertTrue(pos+len <= this->verticeCount, "Mesh::bufferPositions: Position + Length must be within range");
assertTrue(len > 0, "Mesh::bufferPositions: Length must be greater than zero");
glBindBuffer(GL_ARRAY_BUFFER, this->vertexBuffer);
glBufferSubData(
GL_ARRAY_BUFFER,
@ -84,7 +88,10 @@ void Mesh::bufferPositions(int32_t pos, glm::vec3 *positions, int32_t len) {
}
void Mesh::bufferCoordinates(int32_t pos, glm::vec2 *coordinates, int32_t len) {
assertNotNull(coordinates);
assertNotNull(coordinates, "Mesh::bufferCoordinates: Coordinates cannot be null");
assertTrue(pos >= 0 && pos < this->verticeCount, "Mesh::bufferCoordinates: Position must be within range");
assertTrue(pos+len <= this->verticeCount, "Mesh::bufferCoordinates: Position + Length must be within range");
assertTrue(len > 0, "Mesh::bufferCoordinates: Length must be greater than zero");
auto offsetCoordinates = (
(sizeof(glm::vec3) * this->verticeCount) +
@ -101,7 +108,11 @@ void Mesh::bufferCoordinates(int32_t pos, glm::vec2 *coordinates, int32_t len) {
}
void Mesh::bufferIndices(int32_t pos, meshindice_t *indices, int32_t len) {
assertNotNull(indices);
assertNotNull(indices, "Mesh::bufferIndices: Indices cannot be null");
assertTrue(pos >= 0 && pos < this->indiceCount, "Mesh::bufferIndices: Position must be within range");
assertTrue(pos+len <= this->indiceCount, "Mesh::bufferIndices: Position + Length must be within range");
assertTrue(len > 0, "Mesh::bufferIndices: Length must be greater than zero");
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, this->indexBuffer);
glBufferSubData(
GL_ELEMENT_ARRAY_BUFFER,

View File

@ -27,7 +27,7 @@ namespace Dawn {
public:
void init() {
assertTrue(this->id == -1);
assertTrue(this->id == -1, "ShaderParameterBuffer::init: ShaderParameterBuffer is already initialized!");
this->size = sizeof(T);
glGenBuffers(1, &this->id);
@ -50,7 +50,7 @@ namespace Dawn {
}
void bind(shaderbufferslot_t location) override {
assertTrue(this->isReady());
assertTrue(this->isReady(), "ShaderParameterBuffer::bind: ShaderParameterBuffer is not ready!");
glBindBuffer(GL_UNIFORM_BUFFER, this->id);
glBindBufferBase(GL_UNIFORM_BUFFER, location, this->id);
}
@ -73,7 +73,7 @@ namespace Dawn {
* @param length Length of the data to buffer.
*/
void bufferRaw(void *data, size_t start, size_t length) {
assertTrue(this->isReady());
assertTrue(this->isReady(), "ShaderParameterBuffer::bufferRaw: ShaderParameterBuffer is not ready!");
glBindBuffer(GL_UNIFORM_BUFFER, this->id);
glBufferSubData(GL_UNIFORM_BUFFER, start, length, (void*)((size_t)data + start));
}

View File

@ -26,9 +26,9 @@ std::vector<struct ShaderPassItem> SimpleBillboardedMaterial::getRenderPasses(IR
auto mesh = this->item->getComponent<MeshRenderer>();
auto shader = this->getGame()->renderManager.getShaderManager()->getShader<SimpleBillboardedShader>(this->shaderLock);
assertNotNull(mesh);
assertNotNull(mesh->mesh);
assertNotNull(shader);
assertNotNull(mesh, "SimpleBillboardedMaterial::getRenderPasses: Mesh cannot be null");
assertNotNull(mesh->mesh, "SimpleBillboardedMaterial::getRenderPasses: Mesh cannot be null");
assertNotNull(shader, "SimpleBillboardedMaterial::getRenderPasses: Shader cannot be null");
struct ShaderPassItem onlyPass;
onlyPass.mesh = mesh->mesh;

View File

@ -25,9 +25,9 @@ std::vector<struct ShaderPassItem> SimpleTexturedMaterial::getRenderPasses(IRend
auto mesh = this->item->getComponent<MeshRenderer>();
auto shader = this->getGame()->renderManager.getShaderManager()->getShader<SimpleTexturedShader>(this->shaderLock);
assertNotNull(mesh);
assertNotNull(mesh->mesh);
assertNotNull(shader);
assertNotNull(mesh, "SimpleTexturedMaterial::getRenderPasses: Mesh cannot be null");
assertNotNull(mesh->mesh, "SimpleTexturedMaterial::getRenderPasses: Mesh cannot be null");
assertNotNull(shader, "SimpleTexturedMaterial::getRenderPasses: Shader cannot be null");
struct ShaderPassItem onlyPass;
onlyPass.mesh = mesh->mesh;