Skip to content

Instantly share code, notes, and snippets.

@kungfooman
Created March 27, 2017 15:24
Show Gist options
  • Save kungfooman/90ed642d422772d39d19d7e430240c4e to your computer and use it in GitHub Desktop.
Save kungfooman/90ed642d422772d39d19d7e430240c4e to your computer and use it in GitHub Desktop.
Kinda works, but then not...
// When it works: https://i.gyazo.com/cf1ddce65f0eb0233e2389e63487a8ee.jpg
// When it doesn't work: https://i.gyazo.com/42e3ef72ffa244c26f2a9503e70af5e6.png
// I am calling simpletriangle() in renderer2/tr_backend.c at the end of RB_RenderViewFront:
// https://github.com/etlegacy/etlegacy/blob/master/src/renderer2/tr_backend.c#L6045
static void simpletriangle() {
GLuint shader_programme;
GLuint vao;
//GLint oldid;
//glGetIntegerv(GL_CURRENT_PROGRAM, &oldid);
float points[] = {
0.0f, 0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
-0.5f, -0.5f, 0.0f
};
GLuint vbo = 0;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, 9 * sizeof(float), points, GL_STATIC_DRAW);
vao = 0;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
#if 0
// This was just for testing, I'm using the Q3 Shader API now
const char* vertex_shader =
"#version 400\n"
"in vec3 vp;"
"void main() {"
" gl_Position = vec4(vp, 1.0);"
"}";
const char* fragment_shader =
"#version 400\n"
"out vec4 frag_colour;"
"void main() {"
" frag_colour = vec4(0.5, 0.0, 0.5, 1.0);"
"}";
GLuint vs = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vs, 1, &vertex_shader, NULL);
glCompileShader(vs);
GLuint fs = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fs, 1, &fragment_shader, NULL);
glCompileShader(fs);
shader_programme = glCreateProgram();
glAttachShader(shader_programme, fs);
glAttachShader(shader_programme, vs);
glLinkProgram(shader_programme);
glDeleteShader(vs);
glDeleteShader(fs);
glUseProgram(shader_programme);
#else
/*
This needs 1 changed file and 2 new files:
Change file glsl/tr_glslsources.c line 3766
"cameraEffects\n"
"{\n"
"\tfilename \"cameraEffects\"\n"
"\tattribs ATTR_POSITION ATTR_TEXCOORD\n"
"}\n"
"kung_testshader\n"
"{\n"
"\tfilename \"kung_testshader\"\n"
// I don't set attribs because my test shader doesn't have any
//"\tattribs ATTR_POSITION ATTR_TEXCOORD\n"
"}\n"
Create file glsl/kung_testshader_vp.glsl:
in vec3 vp;
void main() {
gl_Position = vec4(vp, 1.0);
}
Create file glsl/kung_testshader_fp.glsl:
out vec4 frag_colour;
void main() {
frag_colour = vec4(0.5, 0.0, 0.5, 1.0);
}
*/
// Both fuck up the scene
//SetMacrosAndSelectProgram(trProg.kung_testshader);
SelectProgram(trProg.kung_testshader);
#endif
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindVertexArray(vao);
// draw points 0-3 from the currently bound VAO with current in-use shader
glDrawArrays(GL_TRIANGLES, 0, 3);
//glBindVertexArray(0);
//glDeleteBuffers(1, &vbo);
//glDeleteProgram(shader_programme);
//glUseProgram(oldid);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment