diff options
author | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-26 10:56:50 (GMT) |
---|---|---|
committer | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-26 10:56:50 (GMT) |
commit | cdc62b4f286ae24d162d940e09faafc75628c7e4 (patch) | |
tree | b6269cc570497bf4d543fd17ccf76a0854d4cdba /glview.cc | |
parent | a05c91bcecb7bbf85c0e5d5a307708e69f8eb9c8 (diff) |
Clifford Wolf:
Sphere bugfix and OpenCSG progress
git-svn-id: http://svn.clifford.at/openscad/trunk@23 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'glview.cc')
-rw-r--r-- | glview.cc | 58 |
1 files changed, 58 insertions, 0 deletions
@@ -47,6 +47,64 @@ void GLView::initializeGL() glDepthRange(-FAR_FAR_AWAY, +FAR_FAR_AWAY); glClearColor(1.0, 1.0, 0.9, 0.0); + +#if 0 + char *vs_source = + "attribute float e1, e2, e3;\n" + "varying float ve1, ve2, ve3;\n" + "void main() {\n" + " gl_FrontColor = gl_Color;\n" + " gl_Position = ftransform();\n" + " ve1 = e1; ve2 = e2; ve3 = e3;\n" + "}\n"; + + char *fs_source = + "#extension GL_EXT_gpu_shader4 : enable\n" + "varying float ve1, ve2, ve3;\n" + "void main() {\n" + " gl_FragColor = vec4(1.0,0.0,0.0,1.0);\n" + " if (ve1 > 0.9 || ve2 > 0.9 || ve3 > 0.9)\n" + " gl_FragColor = vec4(0.0,1.0,0.0,1.0);\n" + " gl_FragColor = gl_FrontColor;\n" + "}\n"; + + GLuint edgeshader_prog = glCreateProgram(); + + GLuint vs = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vs, 1, (const GLchar**)&vs_source, NULL); + glCompileShader(vs); + glAttachShader(edgeshader_prog, vs); + + GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fs, 1, (const GLchar**)&fs_source, NULL); + glCompileShader(fs); + glAttachShader(edgeshader_prog, fs); + + glLinkProgram(edgeshader_prog); + + GLint status; + glGetProgramiv(edgeshader_prog, GL_LINK_STATUS, &status); + if (status == GL_FALSE) { + int loglen; + char logbuffer[1000]; + glGetProgramInfoLog(edgeshader_prog, sizeof(logbuffer), &loglen, logbuffer); + fprintf(stderr, "OpenGL Program Linker Error:\n%.*s", loglen, logbuffer); + } else { + int loglen; + char logbuffer[1000]; + glGetProgramInfoLog(edgeshader_prog, sizeof(logbuffer), &loglen, logbuffer); + if (loglen > 0) { + fprintf(stderr, "OpenGL Program Link OK:\n%.*s", loglen, logbuffer); + } + glValidateProgram(edgeshader_prog); + glGetProgramInfoLog(edgeshader_prog, sizeof(logbuffer), &loglen, logbuffer); + if (loglen > 0) { + fprintf(stderr, "OpenGL Program Validation results:\n%.*s", loglen, logbuffer); + } + } + + glUseProgram(edgeshader_prog); +#endif } void GLView::resizeGL(int w, int h) |