Created
March 27, 2017 15:24
-
-
Save kungfooman/90ed642d422772d39d19d7e430240c4e to your computer and use it in GitHub Desktop.
Kinda works, but then not...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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