Changeset 745
- Timestamp:
- Mar 19, 2011, 12:52:14 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/configure.ac
r711 r745 79 79 dnl Which version of OpenGL to use? 80 80 ac_cv_my_have_gl="no" 81 PKG_CHECK_MODULES(GLES1, glesv1_cm,82 [ac_cv_my_have_gl="yes"83 AC_DEFINE(HAVE_GLES_1X, 1, Define to 1 if GLES 1.x is available)84 GL_CFLAGS="${GLES1_CFLAGS}"85 GL_LIBS="${GLES1_LIBS}"],86 [:])87 81 PKG_CHECK_MODULES(GLES2, glesv2, 88 82 [ac_cv_my_have_gl="yes" … … 93 87 AC_CHECK_LIB(GL, glLoadIdentity, 94 88 [ac_cv_my_have_gl="yes" 95 AC_DEFINE(HAVE_GL_1X, 1, Define to 1 if GL 1.x is available)96 89 AC_DEFINE(HAVE_GL_2X, 1, Define to 1 if GL 2.x is available) 97 90 GL_LIBS="-lGL"]) # FIXME: hackish -
trunk/monsterz/monsterz.cpp
r696 r745 23 23 using namespace lol; 24 24 25 #if defined HAVE_GLES_ 1X || defined HAVE_GLES_2X25 #if defined HAVE_GLES_2X 26 26 # include "eglapp.h" 27 27 #else … … 37 37 int main(int argc, char **argv) 38 38 { 39 #if defined HAVE_GLES_ 1X || defined HAVE_GLES_2X39 #if defined HAVE_GLES_2X 40 40 EglApp app("Monsterz", vec2i(640, 480), 60.0f); 41 41 #else … … 48 48 49 49 /* Register an input driver and some debug stuff */ 50 #if !defined HAVE_GLES_ 1X && !defined HAVE_GLES_2X50 #if !defined HAVE_GLES_2X 51 51 new SdlInput(); 52 52 #endif -
trunk/src/debugquad.cpp
r735 r745 33 33 int initialised; 34 34 float time; 35 #if defined HAVE_GL_2X || defined HAVE_GLES_2X36 35 GLuint buflist[3]; 37 36 Shader *shader; 38 #elif defined HAVE_GL_1X || defined HAVE_GLES_1X39 GLuint buflist[3];40 #endif41 37 GLuint texlist[1]; 42 38 uint8_t image[1][32 * 32 * 4]; … … 71 67 if (data->initialised) 72 68 { 73 #if defined HAVE_GL_2X || defined HAVE_GLES_2X74 69 glDeleteBuffers(3, data->buflist); 75 70 Shader::Destroy(data->shader); 76 #elif defined HAVE_GL_1X || defined HAVE_GLES_1X77 glDeleteBuffers(3, data->buflist);78 #endif79 71 glDeleteTextures(1, data->texlist); 80 72 data->initialised = 0; … … 83 75 else if (!data->initialised) 84 76 { 85 #if defined HAVE_GL_2X || defined HAVE_GLES_2X86 77 glGenBuffers(3, data->buflist); 87 78 … … 109 100 "}\n"; 110 101 data->shader = Shader::Create(vertexshader, fragmentshader); 111 #elif defined HAVE_GL_1X || defined HAVE_GLES_1X112 glGenBuffers(3, data->buflist);113 #endif114 102 glGenTextures(1, data->texlist); 115 103 … … 166 154 }; 167 155 168 #if defined HAVE_GL_2X || defined HAVE_GLES_2X169 156 data->shader->Bind(); 170 157 GLuint attr_pos, attr_col, attr_tex; … … 198 185 glDisableVertexAttribArray(attr_col); 199 186 glDisableVertexAttribArray(attr_tex); 200 #elif defined HAVE_GL_1X || defined HAVE_GLES_1X201 /* Reset all model-view-projection matrices */202 glMatrixMode(GL_PROJECTION);203 glPushMatrix();204 glLoadIdentity();205 glMatrixMode(GL_MODELVIEW);206 glPushMatrix();207 glLoadIdentity();208 209 /* Set up state machine */210 glDisable(GL_DEPTH_TEST);211 glEnableClientState(GL_TEXTURE_COORD_ARRAY);212 glEnable(GL_TEXTURE_2D);213 glEnableClientState(GL_VERTEX_ARRAY);214 glEnableClientState(GL_COLOR_ARRAY);215 glEnable(GL_BLEND);216 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);217 218 /* Bind texture */219 glClientActiveTexture(GL_TEXTURE0);220 glBindTexture(GL_TEXTURE_2D, data->texlist[0]);221 222 /* Bind vertex, color and texture coordinate buffers */223 #if defined HAVE_GL_1X224 glBindBuffer(GL_ARRAY_BUFFER, data->buflist[0]);225 glBufferData(GL_ARRAY_BUFFER, 12 * sizeof(GLfloat), verts, GL_STATIC_DRAW);226 glVertexPointer(2, GL_FLOAT, 0, NULL);227 228 glBindBuffer(GL_ARRAY_BUFFER, data->buflist[1]);229 glBufferData(GL_ARRAY_BUFFER, 24 * sizeof(GLfloat), cols, GL_STATIC_DRAW);230 glColorPointer(4, GL_FLOAT, 0, NULL);231 232 glBindBuffer(GL_ARRAY_BUFFER, data->buflist[2]);233 glBufferData(GL_ARRAY_BUFFER, 12 * sizeof(GLfloat), tcs, GL_STATIC_DRAW);234 glTexCoordPointer(2, GL_FLOAT, 0, NULL);235 #else236 glVertexPointer(2, GL_FLOAT, 0, verts);237 glColorPointer(4, GL_FLOAT, 0, cols);238 glTexCoordPointer(2, GL_FLOAT, 0, tcs);239 #endif240 241 /* Draw arrays */242 glDrawArrays(GL_TRIANGLES, 0, 6);243 244 /* Disable state machine features */245 glDisableClientState(GL_VERTEX_ARRAY);246 glDisableClientState(GL_COLOR_ARRAY);247 glDisableClientState(GL_TEXTURE_COORD_ARRAY);248 249 /* Restore matrices */250 glMatrixMode(GL_PROJECTION);251 glPopMatrix();252 glMatrixMode(GL_MODELVIEW);253 glPopMatrix();254 #endif255 187 } 256 188 -
trunk/src/eglapp.cpp
r735 r745 99 99 EGL_BUFFER_SIZE, 16, 100 100 EGL_RENDERABLE_TYPE, 101 #if defined HAVE_GLES_1X 102 EGL_OPENGL_ES_BIT, 103 #elif defined HAVE_GLES_2X 101 #if defined HAVE_GLES_2X 104 102 EGL_OPENGL_ES2_BIT, 105 103 #endif … … 131 129 EGLint ctxattr[] = 132 130 { 133 #if defined HAVE_GLES_1X 134 EGL_CONTEXT_CLIENT_VERSION, 1, 135 #elif defined HAVE_GLES_2X 131 #if defined HAVE_GLES_2X 136 132 EGL_CONTEXT_CLIENT_VERSION, 2, 137 133 #endif -
trunk/src/lolgl.h
r723 r745 20 20 21 21 /* Only define one GL platform */ 22 #if defined HAVE_GL_1X23 # undef HAVE_GLES_1X24 #endif25 #if defined HAVE_GLES_2X26 # undef HAVE_GL_1X27 # undef HAVE_GLES_1X28 #endif29 22 #if defined HAVE_GL_2X 30 # undef HAVE_GL_1X31 # undef HAVE_GLES_1X32 23 # undef HAVE_GLES_2X 33 24 #endif 34 25 35 26 /* Include GL */ 36 #if defined HAVE_GL_ 1X || defined HAVE_GL_2X27 #if defined HAVE_GL_2X 37 28 # if defined __APPLE__ && defined __MACH__ 38 29 # include <OpenGL/gl.h> … … 40 31 # define GL_GLEXT_PROTOTYPES 41 32 # include <GL/gl.h> 42 # endif43 #elif defined HAVE_GLES_1X44 # if defined __APPLE__ && defined __MACH__45 # include <OpenGLES/ES1/gl.h>46 # include <OpenGLES/ES1/glext.h>47 # else48 # include <GLES/gl.h>49 # include <GLES/glext.h>50 33 # endif 51 34 #elif defined HAVE_GLES_2X … … 60 43 61 44 /* Redefine some function names */ 62 #if defined HAVE_GL_ 1X45 #if defined HAVE_GL_2X 63 46 # define glClearDepthf glClearDepth 64 #elif defined HAVE_GL_2X65 # define glClearDepthf glClearDepth66 #elif defined HAVE_GLES_1X67 # define glGenVertexArrays glGenVertexArraysOES68 # define glDeleteVertexArrays glDeleteVertexArraysOES69 47 #elif defined HAVE_GLES_2X 70 48 # define glGenVertexArrays glGenVertexArraysOES -
trunk/src/scene.cpp
r735 r745 33 33 }; 34 34 35 #if defined HAVE_GL_2X || defined HAVE_GLES_2X36 35 extern Shader *stdshader; 37 #endif38 36 extern mat4 model_matrix; 39 37 … … 156 154 // XXX: end of debug stuff 157 155 158 #if defined HAVE_GL_2X || defined HAVE_GLES_2X159 156 GLuint uni_mat, uni_tex, attr_pos, attr_tex; 160 157 attr_pos = stdshader->GetAttribLocation("in_Position"); … … 170 167 glEnable(GL_DEPTH_TEST); 171 168 glDepthFunc(GL_LEQUAL); 172 # if !defined HAVE_GLES_2X169 #if defined HAVE_GL_2X 173 170 glEnable(GL_ALPHA_TEST); 174 171 glAlphaFunc(GL_GEQUAL, 0.01f); 175 # 172 #endif 176 173 glEnable(GL_BLEND); 177 174 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 178 #else179 glEnable(GL_DEPTH_TEST);180 glDepthFunc(GL_LEQUAL);181 glEnable(GL_ALPHA_TEST);182 glAlphaFunc(GL_GEQUAL, 0.01f);183 glEnable(GL_BLEND);184 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);185 186 glMatrixMode(GL_MODELVIEW);187 glPushMatrix();188 glLoadIdentity();189 glMultMatrixf(&model_matrix[0][0]);190 191 /* Set up state machine */192 glEnableClientState(GL_TEXTURE_COORD_ARRAY);193 glEnable(GL_TEXTURE_2D);194 glEnableClientState(GL_VERTEX_ARRAY);195 #endif196 175 197 176 for (int buf = 0, i = 0, n; i < data->ntiles; i = n, buf += 2) … … 221 200 } 222 201 223 #if defined HAVE_GL_2X || defined HAVE_GLES_2X224 202 stdshader->Bind(); 225 #endif226 203 227 204 /* Bind texture */ … … 229 206 230 207 /* Bind vertex, color and texture coordinate buffers */ 231 #if defined HAVE_GL_2X || defined HAVE_GLES_2X 232 # if !defined HAVE_GLES_2X 208 #if defined HAVE_GL_2X 233 209 glBindVertexArray(data->vao); 234 # 210 #endif 235 211 glEnableVertexAttribArray(attr_pos); 236 212 glEnableVertexAttribArray(attr_tex); … … 245 221 texture, GL_STATIC_DRAW); 246 222 glVertexAttribPointer(attr_tex, 2, GL_FLOAT, GL_FALSE, 0, 0); 247 #elif defined HAVE_GL_1X248 glBindBuffer(GL_ARRAY_BUFFER, data->bufs[buf]);249 glBufferData(GL_ARRAY_BUFFER, 18 * (n - i) * sizeof(GLfloat),250 vertex, GL_STATIC_DRAW);251 glVertexPointer(3, GL_FLOAT, 0, NULL);252 253 glBindBuffer(GL_ARRAY_BUFFER, data->bufs[buf + 1]);254 glBufferData(GL_ARRAY_BUFFER, 12 * (n - i) * sizeof(GLfloat),255 texture, GL_STATIC_DRAW);256 glTexCoordPointer(2, GL_FLOAT, 0, NULL);257 #else258 glVertexPointer(3, GL_FLOAT, 0, vertex);259 glTexCoordPointer(2, GL_FLOAT, 0, texture);260 #endif261 223 262 224 /* Draw arrays */ 263 225 glDrawArrays(GL_TRIANGLES, 0, (n - i) * 6); 264 226 265 #if defined HAVE_GL_2X || defined HAVE_GLES_2X 266 # if !defined HAVE_GLES_2X 227 #if defined HAVE_GL_2X 267 228 glBindVertexArray(0); 268 # 229 #endif 269 230 glDisableVertexAttribArray(attr_pos); 270 231 glDisableVertexAttribArray(attr_tex); 271 #endif272 232 273 233 free(vertex); … … 275 235 } 276 236 277 #if defined HAVE_GL_1X || defined HAVE_GLES_1X278 /* Disable state machine features */279 glDisableClientState(GL_VERTEX_ARRAY);280 glDisableClientState(GL_TEXTURE_COORD_ARRAY);281 282 /* Restore matrices */283 glMatrixMode(GL_PROJECTION);284 glPopMatrix();285 glMatrixMode(GL_MODELVIEW);286 glPopMatrix();287 #endif288 289 237 free(data->tiles); 290 238 data->tiles = 0; -
trunk/src/shader.cpp
r735 r745 35 35 36 36 private: 37 #if defined HAVE_GL_2X || defined HAVE_GLES_2X38 37 GLuint prog_id, vert_id, frag_id; 39 #endif40 38 uint32_t vert_crc, frag_crc; 41 39 … … 79 77 : data(new ShaderData()) 80 78 { 81 #if defined HAVE_GL_2X || defined HAVE_GLES_2X82 79 char buf[4096]; 83 80 GLsizei len; 84 #endif85 81 86 82 data->vert_crc = Hash::Crc32(vert); 87 #if defined HAVE_GL_2X || defined HAVE_GLES_2X88 83 data->vert_id = glCreateShader(GL_VERTEX_SHADER); 89 84 glShaderSource(data->vert_id, 1, &vert, NULL); … … 93 88 if (len > 0) 94 89 Log::Error("failed to compile vertex shader: %s", buf); 95 #endif96 90 97 91 data->frag_crc = Hash::Crc32(frag); 98 #if defined HAVE_GL_2X || defined HAVE_GLES_2X99 92 data->frag_id = glCreateShader(GL_FRAGMENT_SHADER); 100 93 glShaderSource(data->frag_id, 1, &frag, NULL); … … 111 104 glLinkProgram(data->prog_id); 112 105 glValidateProgram(data->prog_id); 113 #endif114 106 } 115 107 116 108 int Shader::GetAttribLocation(char const *attr) const 117 109 { 118 #if defined HAVE_GL_2X || defined HAVE_GLES_2X119 110 return glGetAttribLocation(data->prog_id, attr); 120 #else121 (void)attr;122 return -1;123 #endif124 111 } 125 112 126 113 int Shader::GetUniformLocation(char const *uni) const 127 114 { 128 #if defined HAVE_GL_2X || defined HAVE_GLES_2X129 115 return glGetUniformLocation(data->prog_id, uni); 130 #else131 (void)uni;132 return -1;133 #endif134 116 } 135 117 136 118 void Shader::Bind() const 137 119 { 138 #if defined HAVE_GL_2X || defined HAVE_GLES_2X139 120 glUseProgram(data->prog_id); 140 #endif141 121 } 142 122 143 123 Shader::~Shader() 144 124 { 145 #if defined HAVE_GL_2X || defined HAVE_GLES_2X146 125 glDetachShader(data->prog_id, data->vert_id); 147 126 glDetachShader(data->prog_id, data->frag_id); … … 149 128 glDeleteShader(data->frag_id); 150 129 glDeleteProgram(data->prog_id); 151 #endif152 130 delete data; 153 131 } -
trunk/src/video.cpp
r742 r745 30 30 #endif 31 31 32 #if defined HAVE_GL_2X || defined HAVE_GLES_2X33 32 Shader *stdshader; 34 #endif35 33 mat4 proj_matrix, view_matrix, model_matrix; 36 34 37 #if defined HAVE_GL_2X || defined HAVE_GLES_2X38 35 static char const *vertexshader = 39 #if !defined HAVE_GLES_2X36 #if defined HAVE_GL_2X 40 37 "#version 130\n" 41 38 #endif … … 88 85 " vec4 col = texture2D(in_Texture, vec2(gl_TexCoord[0]));\n" 89 86 #endif 90 #if 187 #if 0 91 88 " float mul = 2.0;\n" 92 " float dx1 = mod(gl_FragCoord.x, 2.0);\n" 93 " float dy1 = mod(gl_FragCoord.y, 2.0);\n" 94 " float t1 = mod(3.0 * dx1 + 2.0 * dy1, 4.0);\n" 89 " vec2 d1 = mod(vec2(gl_FragCoord), vec2(2.0, 2.0));\n" 90 " float t1 = mod(3.0 * d1.x + 2.0 * d1.y, 4.0);\n" 95 91 " float dx2 = mod(floor(gl_FragCoord.x * 0.5), 2.0);\n" 96 92 " float dy2 = mod(floor(gl_FragCoord.y * 0.5), 2.0);\n" … … 112 108 " gl_FragColor = col;\n" 113 109 "}\n"; 114 #endif115 110 116 111 /* … … 130 125 glClearDepthf(1.0); 131 126 132 #if defined HAVE_GL_2X || defined HAVE_GLES_1X127 #if defined HAVE_GL_2X 133 128 glShadeModel(GL_SMOOTH); 134 #endif135 #if defined HAVE_GL_2X || defined HAVE_GLES_1X136 129 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 137 130 #endif 138 131 139 #if defined HAVE_GL_2X || defined HAVE_GLES_2X140 132 stdshader = Shader::Create(vertexshader, fragmentshader); 141 #endif142 133 } 143 134 … … 189 180 view_matrix = mat4(1.0f); 190 181 191 #if defined HAVE_GL_2X || defined HAVE_GLES_2X192 182 stdshader->Bind(); /* Required on GLES 2.x? */ 193 183 GLuint uni; … … 196 186 uni = stdshader->GetUniformLocation("view_matrix"); 197 187 glUniformMatrix4fv(uni, 1, GL_FALSE, &view_matrix[0][0]); 198 #else199 glMatrixMode(GL_PROJECTION);200 glLoadIdentity();201 glMultMatrixf(&proj_matrix[0][0]);202 203 /* Reset the model view matrix, just in case */204 glMatrixMode(GL_MODELVIEW);205 glLoadIdentity();206 glMultMatrixf(&view_matrix[0][0]);207 #endif208 188 } 209 189 … … 226 206 void Video::Destroy() 227 207 { 228 #if defined HAVE_GL_2X || defined HAVE_GLES_2X229 208 Shader::Destroy(stdshader); 230 #endif231 209 } 232 210 … … 237 215 int width = v[2], height = v[3]; 238 216 239 #if defined HAVE_GL_ 1X || defined HAVE_GL_2X217 #if defined HAVE_GL_2X 240 218 glPixelStorei(GL_PACK_ROW_LENGTH, 0); 241 219 #endif
Note: See TracChangeset
for help on using the changeset viewer.