fix: remove alpha blending

This commit is contained in:
Kevin J. 2025-01-27 20:33:39 +01:00
parent 1489671f24
commit 1cdce17eb9
7 changed files with 1309072 additions and 29 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
build/ build/
.cache/ .cache/
compile_commands.json

View File

@ -19,7 +19,7 @@ class EngineObject {
glm::vec4 scale; glm::vec4 scale;
std::vector<float> vertices; std::vector<float> vertices;
std::vector<uint16_t> indices; std::vector<unsigned int> indices;
bgfx::VertexLayout layout; bgfx::VertexLayout layout;
bgfx::TextureHandle texture; bgfx::TextureHandle texture;

1309064
models/dragon.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@ -30,5 +30,5 @@ void main() {
vec4 pos = view + u_position; vec4 pos = view + u_position;
gl_Position = mul(u_proj, pos); gl_Position = mul(u_proj, pos);
f_position = r_position; f_position = a_position;
} }

View File

@ -132,7 +132,7 @@ int Engine::Update(void) {
BGFX_STATE_WRITE_G | BGFX_STATE_WRITE_G |
BGFX_STATE_WRITE_B | BGFX_STATE_WRITE_B |
BGFX_STATE_WRITE_A | BGFX_STATE_WRITE_A |
BGFX_STATE_BLEND_ALPHA | BGFX_STATE_WRITE_Z |
BGFX_STATE_DEPTH_TEST_LESS | BGFX_STATE_DEPTH_TEST_LESS |
BGFX_STATE_CULL_CCW ); BGFX_STATE_CULL_CCW );
@ -153,7 +153,7 @@ int Engine::Update(void) {
return 0; return 0;
} }
void Engine::Shutdown(void) { void Engine::Shutdown(void) {
for (int i = 0; i < this->objs.size(); i++) { for (int i = 0; i < this->objs.size(); i++) {
EngineObject* obj = this->objs[i]; EngineObject* obj = this->objs[i];
bgfx::destroy(obj->vbh); bgfx::destroy(obj->vbh);

View File

@ -18,14 +18,6 @@ EngineObject::EngineObject() {
} }
int EngineObject::load_node(aiScene *scene, aiNode *node) { int EngineObject::load_node(aiScene *scene, aiNode *node) {
if (node == nullptr) {
return -1;
}
if (scene == nullptr) {
return -1;
}
for (unsigned int i = 0; i < scene->mNumMeshes; ++i) { for (unsigned int i = 0; i < scene->mNumMeshes; ++i) {
aiMesh *mesh = scene->mMeshes[i]; aiMesh *mesh = scene->mMeshes[i];
for (unsigned int j = 0; j < mesh->mNumVertices; ++j) { for (unsigned int j = 0; j < mesh->mNumVertices; ++j) {
@ -47,12 +39,6 @@ int EngineObject::load_node(aiScene *scene, aiNode *node) {
return 0; return 0;
} }
struct vertex {
float x;
float y;
float z;
};
int EngineObject::load_model(std::string filename) { int EngineObject::load_model(std::string filename) {
Assimp::Importer importer; Assimp::Importer importer;
aiScene *scene = (aiScene *) importer.ReadFile(filename, aiProcess_Triangulate | aiProcess_FlipUVs); aiScene *scene = (aiScene *) importer.ReadFile(filename, aiProcess_Triangulate | aiProcess_FlipUVs);
@ -62,20 +48,12 @@ int EngineObject::load_model(std::string filename) {
} }
aiNode *root = scene->mRootNode; aiNode *root = scene->mRootNode;
if (root == NULL) {
std::cout << "--error: no model inside the loaded scene" << std::endl;
return -1;
}
int ret = this->load_node(scene, root); int ret = this->load_node(scene, root);
if (ret < 0) { if (ret < 0) {
std::cout << "-error: failed loading node tree" << std::endl; std::cout << "-error: failed loading node tree" << std::endl;
return -1; return -1;
} }
std::cout << "--log: successfully loaded model (" << filename << ")" << std::endl;
this->vbh = bgfx::createVertexBuffer(bgfx::makeRef( this->vbh = bgfx::createVertexBuffer(bgfx::makeRef(
this->vertices.data(), this->vertices.data(),
this->vertices.size()*sizeof(float)), this->vertices.size()*sizeof(float)),
@ -83,8 +61,8 @@ int EngineObject::load_model(std::string filename) {
this->ibh = bgfx::createIndexBuffer(bgfx::makeRef( this->ibh = bgfx::createIndexBuffer(bgfx::makeRef(
this->indices.data(), this->indices.data(),
this->indices.size()*sizeof(uint16_t)) this->indices.size()*sizeof(unsigned int)),
); BGFX_BUFFER_INDEX32);
return 0; return 0;
} }

View File

@ -21,7 +21,7 @@ int main(int argc, char *argv[]) {
} }
EngineObject obj; EngineObject obj;
obj.load_model("models/cube.obj"); obj.load_model("models/dragon.obj");
obj.position.z = -30.0f; obj.position.z = -30.0f;
engine.Instantiate(&obj); engine.Instantiate(&obj);