feat: assignment 2
This commit is contained in:
		
							
								
								
									
										33
									
								
								src/mesh.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/mesh.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| #include "mesh.h" | ||||
| #include "buffer.h" | ||||
| #include "shader.h" | ||||
| #include "state.h" | ||||
|  | ||||
| void Mesh::addBuffer(const std::shared_ptr<Buffer>& buffer, | ||||
| 		     const std::shared_ptr<Shader>& shader) | ||||
| { | ||||
| 	buffers_.push_back(buffer); | ||||
| 	shaders_.push_back(shader); | ||||
| } | ||||
|  | ||||
| void Mesh::draw() | ||||
| { | ||||
| 	// Calculate MVP matrix | ||||
| 	glm::mat4 mvp = | ||||
| 	    State::projectionMatrix * State::viewMatrix * State::modelMatrix; | ||||
|  | ||||
| 	// Draw each buffer with its shader | ||||
| 	for (size_t i = 0; i < buffers_.size(); ++i) { | ||||
| 		// Use buffer's shader if available, otherwise use default | ||||
| 		// shader | ||||
| 		std::shared_ptr<Shader> shader = | ||||
| 		    shaders_[i] ? shaders_[i] : State::defaultShader; | ||||
|  | ||||
| 		if (shader) { | ||||
| 			shader->Use(); | ||||
| 			int mvpLoc = shader->getLocation("mvp"); | ||||
| 			Shader::setMat4(mvpLoc, mvp); | ||||
| 			buffers_[i]->Draw(*shader); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user