diff --git a/LoadingModels/earth.jpg b/LoadingModels/earth.jpg new file mode 100644 index 0000000..b40ae31 Binary files /dev/null and b/LoadingModels/earth.jpg differ diff --git a/LoadingModels/main.cpp b/LoadingModels/main.cpp index 466e03f..c7a9956 100644 --- a/LoadingModels/main.cpp +++ b/LoadingModels/main.cpp @@ -54,17 +54,18 @@ void setupVertices(void) { // 36 vertices, 12 triangles, makes 2x2x2 cube placed glGenBuffers(numVBOs, vbo); glBindBuffer(GL_ARRAY_BUFFER, vbo[0]); - glBufferData(GL_ARRAY_BUFFER, pvalues.size()*sizeof(float), vertices.data(), GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, pvalues.size()*4, &pvalues[0], GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, vbo[1]); - glBufferData(GL_ARRAY_BUFFER, tvalues.size()*sizeof(float), tvalues.data(), GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, tvalues.size()*4, &tvalues[0],GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, vbo[2]); - glBufferData(GL_ARRAY_BUFFER, nvalues.size()*sizeof(float), nvalues.data(), GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, nvalues.size()*4, &nvalues[0], GL_STATIC_DRAW); } void setupTextures(){ - pyrTex=utils::loadTexture("brick1.jpg"); + pyrTex=utils::loadTexture("earth.jpg"); + glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D,pyrTex); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR); glGenerateMipmap(GL_TEXTURE_2D); @@ -74,11 +75,24 @@ void setupTextures(){ void init(GLFWwindow* window) { renderingProgram=utils::createShaderProgram("vertShader.glsl","fragShader.glsl"); - camera={0.0f,2.0f,-10.0f}; + camera={0.0f,0.0f,-10.0f}; setupVertices(); setupTextures(); } +void DrawSphere(){ + glUniformMatrix4fv(mvLoc,1,GL_FALSE,glm::value_ptr(mvMat)); + glUniformMatrix4fv(projLoc,1,GL_FALSE,glm::value_ptr(pMat)); + glBindBuffer(GL_ARRAY_BUFFER,vbo[0]); + glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,0,0); + glBindBuffer(GL_ARRAY_BUFFER,vbo[1]); + glVertexAttribPointer(1,2,GL_FLOAT,GL_FALSE,0,0); + glBindBuffer(GL_ARRAY_BUFFER,vbo[2]); + glVertexAttribPointer(2,3,GL_FLOAT,GL_FALSE,0,0); + + glDrawArrays(GL_TRIANGLES,0,sphere.getNumIndices()); +} + double lastTime=0; void display(GLFWwindow* window, double currentTime) { @@ -86,7 +100,7 @@ void display(GLFWwindow* window, double currentTime) { lastTime=currentTime; glClear(GL_DEPTH_BUFFER_BIT); - glClearColor(0,0,0.2,1); + glClearColor(0.2,0,0.2,1); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(renderingProgram); @@ -94,6 +108,7 @@ void display(GLFWwindow* window, double currentTime) { glDepthFunc(GL_LEQUAL); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); + glEnableVertexAttribArray(2); mvLoc=glGetUniformLocation(renderingProgram,"mv_matrix"); projLoc=glGetUniformLocation(renderingProgram,"proj_matrix"); @@ -104,23 +119,12 @@ void display(GLFWwindow* window, double currentTime) { vMat=glm::translate(glm::mat4(1.0f),glm::vec3{camera.x,camera.y,camera.z}); - - mMat=glm::translate(mMat,{0.f,0.f,0.f}); + mMat=glm::translate(glm::mat4(1.0f),{0.f,0.f,0.f}); + mMat=glm::rotate(mMat,float(currentTime/4),{0.f,1.f,0.2f}); + mMat=glm::scale(mMat,{5,5,5}); mvMat=vMat*mMat; - glUniformMatrix4fv(mvLoc,1,GL_FALSE,glm::value_ptr(mvMat)); - glUniformMatrix4fv(projLoc,1,GL_FALSE,glm::value_ptr(pMat)); - glBindBuffer(GL_ARRAY_BUFFER,vbo[0]); - glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,0,0); - glBindBuffer(GL_ARRAY_BUFFER,vbo[1]); - glVertexAttribPointer(0,2,GL_FLOAT,GL_FALSE,0,0); - glBindBuffer(GL_ARRAY_BUFFER,vbo[2]); - glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,0,0); - - glActiveTexture(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D,pyrTex); - - glDrawArrays(GL_TRIANGLES,0,sphere.getNumIndices()); + DrawSphere(); } int main(void) { diff --git a/LoadingModels/vertShader.glsl b/LoadingModels/vertShader.glsl index 3c813fe..95c56bd 100644 --- a/LoadingModels/vertShader.glsl +++ b/LoadingModels/vertShader.glsl @@ -1,9 +1,9 @@ #version 430 layout (location=0) in vec3 position; layout (location=1) in vec2 texCoords; +layout (location=2) in vec3 normals; uniform mat4 mv_matrix; uniform mat4 proj_matrix; -out vec4 varyingColor; out vec2 uv; mat4 buildTranslate(float x, float y, float z); diff --git a/Models/brick1.jpg b/Models/brick1.jpg new file mode 100644 index 0000000..dbcb80f Binary files /dev/null and b/Models/brick1.jpg differ