Browse Source

basic drawing works now. lets add deferred rendering

Zoadian 11 years ago
parent
commit
97d03cf23c
3 changed files with 8 additions and 6 deletions
  1. 2 0
      source/three/common.d
  2. 2 1
      source/three/mesh.d
  3. 4 5
      source/three/renderer.d

+ 2 - 0
source/three/common.d

@@ -7,6 +7,8 @@ public import derelict.freeimage.freeimage;
 public import derelict.freetype.ft;
 public import derelict.assimp3.assimp;
 
+public import std.experimental.logger;
+
 alias SoA(T) = T[];
 
 

+ 2 - 1
source/three/mesh.d

@@ -43,11 +43,12 @@ void loadModel(ref SOAMesh mesh, string filePath) {
 		alias TexCoord = float[2];
 		alias Color = float[4];
 		alias Index = uint[1];
-		
+
 		size_t cntIndices = 0;
 		foreach(f; 0..meshData.mNumFaces) {
 			cntIndices += meshData.mFaces[f].mNumIndices;				
 		}
+		mesh.cntIndices[meshIdx] = cntIndices;
 		
 		{// upload vertex data
 			Vertex[] vertexData;

+ 4 - 5
source/three/renderer.d

@@ -53,7 +53,7 @@ struct GBuffer {
 
 void construct(out GBuffer gBuffer, uint width, uint height) nothrow {
 	gBuffer.width = width;
-	gBuffer.width = height;
+	gBuffer.height = height;
 	
 	glCheck!glGenTextures(1, &gBuffer.textureDepth);		
 	glCheck!glBindTexture(GL_TEXTURE_2D, gBuffer.textureDepth);
@@ -170,8 +170,7 @@ void renderOneFrame(ref OpenGlTiledDeferredRenderer renderer, ref Scene scene, r
 	//    (a) sample the G-Buffers at f.
 	//    (b) accumulate light contributions from all lights in tile at ⌊f /t⌋
 	//    (c) output total light contributions to frame buffer at f
-	
-	
+
 	with(renderer.gBuffer) glCheck!glViewport(0, 0, width, height);
 	
 	//enable depth mask _before_ glClear ing the depth buffer!
@@ -198,8 +197,8 @@ void renderOneFrame(ref OpenGlTiledDeferredRenderer renderer, ref Scene scene, r
 			glCheck!glBindVertexArray(scene.mesh.vao[meshIdx]); 
 			
 			glCheck!glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, scene.mesh.vboIndices[meshIdx]); // TODO: GL_ELEMENT_ARRAY_BUFFER should be vao state, but bugs might make this necessary
-			
-			glCheck!glDrawElements(GL_TRIANGLES, scene.mesh.cntIndices[meshIdx], GL_UNSIGNED_SHORT, null);
+
+			glCheck!glDrawElements(GL_TRIANGLES, scene.mesh.cntIndices[meshIdx], GL_UNSIGNED_INT, null);
 		}
 	}
 }