Changeset 8b7cfcf in opengl-game


Ignore:
Timestamp:
Aug 5, 2017, 2:24:43 AM (7 years ago)
Author:
Dmitry Portnoy <dmitry.portnoy@…>
Branches:
feature/imgui-sdl, master, points-test
Children:
d0b9596
Parents:
c40990d
Message:

Allow each vertex to have its own color

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • makefile

    rc40990d r8b7cfcf  
    1313        $(CC) $? $(DEP) $(CFLAGS) -o $@
    1414
    15 game: mygame.cpp common/shader.cpp common/texture.cpp common/controls-new.cpp
     15game: game.cpp common/shader.cpp common/texture.cpp common/controls-new.cpp
    1616        $(CC) $? $(DEP) $(CFLAGS) -o $@
    1717
  • new-game.cpp

    rc40990d r8b7cfcf  
     1// NEXT STEP; Modify the vertex shader
     2
    13#include "logger.h"
    24
     
    8183   };
    8284
    83    GLuint vbo = 0;
    84    glGenBuffers(1, &vbo);
    85    glBindBuffer(GL_ARRAY_BUFFER, vbo);
     85   GLfloat colors[] = {
     86     1.0, 0.0, 0.0,
     87     0.0, 1.0, 0.0,
     88     0.0, 0.0, 1.0,
     89   };
     90
     91   GLuint points_vbo = 0;
     92   glGenBuffers(1, &points_vbo);
     93   glBindBuffer(GL_ARRAY_BUFFER, points_vbo);
    8694   glBufferData(GL_ARRAY_BUFFER, sizeof(points), points, GL_STATIC_DRAW);
     95
     96   GLuint colors_vbo = 0;
     97   glGenBuffers(1, &colors_vbo);
     98   glBindBuffer(GL_ARRAY_BUFFER, colors_vbo);
     99   glBufferData(GL_ARRAY_BUFFER, sizeof(colors), colors, GL_STATIC_DRAW);
    87100
    88101   GLuint vao = 0;
    89102   glGenVertexArrays(1, &vao);
    90103   glBindVertexArray(vao);
     104   glBindBuffer(GL_ARRAY_BUFFER, points_vbo);
     105   glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
     106   glBindBuffer(GL_ARRAY_BUFFER, colors_vbo);
     107   glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, NULL);
     108
    91109   glEnableVertexAttribArray(0);
    92    glBindBuffer(GL_ARRAY_BUFFER, vbo);
    93    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
    94 
    95    //string vertexShaderString = loadShader();
     110   glEnableVertexAttribArray(1);
    96111
    97112   GLuint vs = loadShader(GL_VERTEX_SHADER, "./test.vert");
     
    101116   glAttachShader(shader_program, vs);
    102117   glAttachShader(shader_program, fs);
     118
     119   // this must be used on OSX instead of using layout() in the shader
     120   glBindAttribLocation(shader_program, 0, "vertex_position");
     121   glBindAttribLocation(shader_program, 1, "vertex_color");
     122
    103123   glLinkProgram(shader_program);
    104124
  • test.frag

    rc40990d r8b7cfcf  
    11#version 410
    22
    3 //uniform vec4 inputColor;
    4 out vec4 fragColor;
     3in vec3 color;
     4out vec4 frag_color;
    55
    66void main() {
    7   //fragColor = inputColor;
    8   fragColor = vec4(0.5, 0.0, 0.5, 1.0);
     7  frag_color = vec4(color, 1.0);
    98}
  • test.vert

    rc40990d r8b7cfcf  
    11#version 410
    22
     3// using layout() doens't work on OSX, so use glBindAttribLocation() in the C++ code instead
     4// layout(position = 0) in vec3 vertex_position;
     5// layout(position = 1) in vec3 vertex_color;
     6
    37in vec3 vertex_position;
     8in vec3 vertex_color;
     9
     10out vec3 color;
    411
    512void main() {
     13  color = vertex_color;
    614  gl_Position = vec4(vertex_position, 1.0);
    715}
Note: See TracChangeset for help on using the changeset viewer.