Render a sphere / Earth
This commit is contained in:
parent
a14516f74f
commit
05e821adc3
BIN
LoadingModels/earth.jpg
Normal file
BIN
LoadingModels/earth.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 836 KiB |
@ -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) {
|
||||
|
@ -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);
|
||||
|
BIN
Models/brick1.jpg
Normal file
BIN
Models/brick1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 180 KiB |
Loading…
x
Reference in New Issue
Block a user