diff --git a/opengl-test-two/bin/Debug/opengl-test-two.exe b/opengl-test-two/bin/Debug/opengl-test-two.exe index 068eca7..2f1a650 100644 Binary files a/opengl-test-two/bin/Debug/opengl-test-two.exe and b/opengl-test-two/bin/Debug/opengl-test-two.exe differ diff --git a/opengl-test-two/main.cpp b/opengl-test-two/main.cpp index 22927f2..b3a8463 100644 --- a/opengl-test-two/main.cpp +++ b/opengl-test-two/main.cpp @@ -169,10 +169,6 @@ GLuint LoadShaders(const char * vertex_file_path,const char * fragment_file_path int main(int argc, char* args[]) { GLFWwindow* window; GLuint tex_jpe; - GLuint tex_jpg; - GLuint tex_gif; - GLuint tex_png; - GLuint tex_bmp; int textw, texth; int timer = 0; @@ -213,15 +209,56 @@ int main(int argc, char* args[]) { } // INIT + + GLuint VertexArrayID; + glGenVertexArrays(1, &VertexArrayID); + glBindVertexArray(VertexArrayID); + // An array of 3 vectors which represents 3 vertices + static const GLfloat g_vertex_buffer_data[] = { + -1.0f, -1.0f, 0.0f, // (bottom - left ) TRIANGLE 1 + 1.0f, -1.0f, 0.0f, // (bottom - right) + -1.0f, 1.0f, 0.0f, // (top - left ) + 1.0f, 1.0f, 0.0f, // (top - right) TRIANGLE 2 + 1.0f, -1.0f, 0.0f, // (bottom - right) + -1.0f, 1.0f, 0.0f, // (top - left ) + }; + // One color for each vertex. They were generated randomly. + static const GLfloat g_color_buffer_data[] = { + 0.583f, 0.771f, 0.014f, + 0.609f, 0.115f, 0.436f, + 0.327f, 0.483f, 0.844f, + 0.822f, 0.569f, 0.201f, + 0.435f, 0.602f, 0.223f, + 0.310f, 0.747f, 0.185f, + }; + + + // Identify our vertex buffer + GLuint vertexbuffer; + glGenBuffers(1, &vertexbuffer); + glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW); + + // Identify our color buffer + GLuint colorbuffer; + glGenBuffers(1, &colorbuffer); + glBindBuffer(GL_ARRAY_BUFFER, colorbuffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(g_color_buffer_data), g_color_buffer_data, GL_STATIC_DRAW); + + + + + + + tex_jpe=LoadTexture("../img/tests/test.jpeg",&textw,&texth); - //tex_jpg=LoadTexture("../img/tests/test.jpg",&textw,&texth); - //tex_png=LoadTexture("../img/tests/test.png",&textw,&texth); - //tex_bmp=LoadTexture("../img/tests/test.bmp",&textw,&texth); GLuint programID = LoadShaders("trimap.vertexshader", "trimap.fragmentshader"); printf("%d", programID); - GLint textureLocation = glGetUniformLocationARB(programID, "texture"); - glUniform1iARB(textureLocation, tex_jpe); + //GLint textureLocation = glGetUniformLocationARB(programID, "myTextureSampler"); + //glUniform1iARB(textureLocation, tex_jpe); + + // INIT END /* Loop until the user closes the window */ @@ -234,21 +271,35 @@ int main(int argc, char* args[]) { glUseProgram(programID); - // RENDER - /*if (timer<200) - DrawTexture(50,50,tex_jpe,textw,texth); - else if (timer<400) - DrawTexture(50,50,tex_jpg,textw,texth); - else if (timer<600) - DrawTexture(50,50,tex_png,textw,texth); - else - DrawTexture(50,50,tex_bmp,textw,texth);*/ - glBegin(GL_QUADS); - glTexCoord2d(0.0,0.0); glVertex2f(-1, -1); - glTexCoord2d(1.0,0.0); glVertex2f(1, -1); - glTexCoord2d(1.0,1.0); glVertex2f(1, 0); - glTexCoord2d(0.0,1.0); glVertex2f(-1, 0); - glEnd(); + // 1rst attribute buffer : vertices + glEnableVertexAttribArray(0); + glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer); + glVertexAttribPointer( + 0, // attribute 0. No particular reason for 0, but must match the layout in the shader. + 3, // size + GL_FLOAT, // type + GL_FALSE, // normalized? + 0, // stride + (void*)0 // array buffer offset + ); + // 2nd attribute buffer : colors + glEnableVertexAttribArray(1); + glBindBuffer(GL_ARRAY_BUFFER, colorbuffer); + glVertexAttribPointer( + 1, // attribute. No particular reason for 1, but must match the layout in the shader. + 3, // size + GL_FLOAT, // type + GL_FALSE, // normalized? + 0, // stride + (void*)0 // array buffer offset + ); + + + // Draw the triangle ! + glDrawArrays(GL_TRIANGLES, 0, 2*3); // 2*3 indices starting at 0 -> 2 triangles -> 1 square + glDisableVertexAttribArray(0); + + // RENDER END /* Swap front and back buffers */ diff --git a/opengl-test-two/opengl-test-two.depend b/opengl-test-two/opengl-test-two.depend index aa8e42d..072d654 100644 --- a/opengl-test-two/opengl-test-two.depend +++ b/opengl-test-two/opengl-test-two.depend @@ -2,7 +2,7 @@ 1385320478 source:d:\owncloud\documents\programmierung\cpp\opengl-test-two\main.cpp -1473070070 source:d:\owncloud\documents\programmierung\cpp\imanox-chroma-matting\opengl-test-two\main.cpp +1473093222 source:d:\owncloud\documents\programmierung\cpp\imanox-chroma-matting\opengl-test-two\main.cpp diff --git a/opengl-test-two/trimap.fragmentshader b/opengl-test-two/trimap.fragmentshader index fe22e4d..29ff21b 100644 --- a/opengl-test-two/trimap.fragmentshader +++ b/opengl-test-two/trimap.fragmentshader @@ -1,11 +1,8 @@ #version 330 core -uniform sampler2D texture; -in vec2 vTexCoord; -out vec4 color; +in vec3 fragmentColor; +out vec3 color; void main(){ - //color = vec4(1f,0f,0f,1.0f); - vec2 tcoord=vec2(0.5f,0.5f); - color = vec4(texelFetch(texture, ivec2(vTexCoord), 0).rgb, 1); + color = fragmentColor; } diff --git a/opengl-test-two/trimap.vertexshader b/opengl-test-two/trimap.vertexshader index 38e88de..7d1aaec 100644 --- a/opengl-test-two/trimap.vertexshader +++ b/opengl-test-two/trimap.vertexshader @@ -1,13 +1,11 @@ -#version 400 +#version 330 core -in vec2 aVertex; -in vec2 aTexCoord; +layout(location = 0) in vec3 vertexPosition_modelspace; +layout(location = 1) in vec3 vertexColor; +out vec3 fragmentColor; -out vec2 vTexCoord; -out vec3 vNormal; - -void main() -{ - vTexCoord = aTexCoord; - gl_Position = vec3(aVertex, 1); +void main(){ + gl_Position.xyz = vertexPosition_modelspace; + gl_Position.w = 1.0; + fragmentColor = vertexColor; }