aboutsummaryrefslogtreecommitdiff
path: root/tests/gl_ps_workaround2.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gl_ps_workaround2.c')
-rw-r--r--tests/gl_ps_workaround2.c230
1 files changed, 0 insertions, 230 deletions
diff --git a/tests/gl_ps_workaround2.c b/tests/gl_ps_workaround2.c
deleted file mode 100644
index e5bd2fd1..00000000
--- a/tests/gl_ps_workaround2.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/*******************************************************************
- * *
- * Using SDL With OpenGL *
- * *
- * Tutorial by Kyle Foley (sdw) *
- * *
- * http://gpwiki.org/index.php/SDL:Tutorials:Using_SDL_with_OpenGL *
- * *
- *******************************************************************/
-
-/*
-THIS WORK, INCLUDING THE SOURCE CODE, DOCUMENTATION
-AND RELATED MEDIA AND DATA, IS PLACED INTO THE PUBLIC DOMAIN.
-
-THE ORIGINAL AUTHOR IS KYLE FOLEY.
-
-THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY
-OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF
-MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE,
-ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE
-RESULTING FROM THE USE, MODIFICATION, OR
-REDISTRIBUTION OF THIS SOFTWARE.
-*/
-
-#if !EMSCRIPTEN
-#define USE_GLEW 1
-#endif
-
-#if USE_GLEW
-#include "GL/glew.h"
-#endif
-
-#include "SDL/SDL.h"
-#include "SDL/SDL_image.h"
-#if !USE_GLEW
-#include "SDL/SDL_opengl.h"
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-void shaders() {
-#if USE_GLEW
- glewInit();
-#endif
-
- GLint ok;
-
- const char *vertexShader = "void main(void) \n"
- "{ \n"
- " gl_Position = ftransform(); \n"
- " gl_TexCoord[0] = gl_MultiTexCoord0; \n"
- " gl_FrontColor = gl_Color; \n"
- "} \n";
- const char *fragmentShader = "uniform sampler2D tex0; \n"
- "void main(void) \n"
- "{ \n"
- " gl_FragColor = gl_Color * texture2D(tex0, gl_TexCoord[0].xy); \n"
- "} \n";
-
- GLuint vs = glCreateShader(GL_VERTEX_SHADER);
- glShaderSource(vs, 1, &vertexShader, NULL);
- glCompileShader(vs);
- glGetShaderiv(vs, GL_COMPILE_STATUS, &ok);
- assert(ok);
-
- GLuint fs = glCreateShader(GL_FRAGMENT_SHADER);
- glShaderSource(fs, 1, &fragmentShader, NULL);
- glCompileShader(fs);
- glGetShaderiv(fs, GL_COMPILE_STATUS, &ok);
- assert(ok);
-
- GLuint program = glCreateProgram();
-
- glAttachShader(program, vs);
- glAttachShader(program, fs);
- glLinkProgram(program);
- glGetProgramiv(program, GL_LINK_STATUS, &ok);
- assert(ok);
-
- glUseProgram(program);
-}
-
-int main(int argc, char *argv[])
-{
- SDL_Surface *screen;
-
- // Slightly different SDL initialization
- if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) {
- printf("Unable to initialize SDL: %s\n", SDL_GetError());
- return 1;
- }
-
- SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); // *new*
-
- screen = SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL ); // *changed*
- if ( !screen ) {
- printf("Unable to set video mode: %s\n", SDL_GetError());
- return 1;
- }
-
- // Set the OpenGL state after creating the context with SDL_SetVideoMode
-
- glClearColor( 0, 0, 0, 0 );
-
-#if !EMSCRIPTEN
- glEnable( GL_TEXTURE_2D ); // Need this to display a texture XXX unnecessary in OpenGL ES 2.0/WebGL
-#endif
-
- glViewport( 0, 0, 640, 480 );
-
- glMatrixMode( GL_PROJECTION );
- GLfloat matrixData[] = { 2.0/640, 0, 0, 0,
- 0, -2.0/480, 0, 0,
- 0, 0, -1, 0,
- -1, 1, 0, 1 };
- glLoadMatrixf(matrixData); // test loadmatrix
-
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-
- // Load the OpenGL texture
-
- GLuint texture; // Texture object handle
- SDL_Surface *surface; // Gives us the information to make the texture
-
- if ( (surface = IMG_Load("screenshot.png")) ) {
-
- // Check that the image's width is a power of 2
- if ( (surface->w & (surface->w - 1)) != 0 ) {
- printf("warning: image.bmp's width is not a power of 2\n");
- }
-
- // Also check if the height is a power of 2
- if ( (surface->h & (surface->h - 1)) != 0 ) {
- printf("warning: image.bmp's height is not a power of 2\n");
- }
-
- // Have OpenGL generate a texture object handle for us
- glGenTextures( 1, &texture );
-
- // Bind the texture object
- glBindTexture( GL_TEXTURE_2D, texture );
-
- // Set the texture's stretching properties
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
-
- //SDL_LockSurface(surface);
-
- // Add some greyness
- memset(surface->pixels, 0x66, surface->w*surface->h);
-
- // Edit the texture object's image data using the information SDL_Surface gives us
- glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, surface->w, surface->h, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels );
-
- //SDL_UnlockSurface(surface);
- }
- else {
- printf("SDL could not load image.bmp: %s\n", SDL_GetError());
- SDL_Quit();
- return 1;
- }
-
- // Free the SDL_Surface only if it was successfully created
- if ( surface ) {
- SDL_FreeSurface( surface );
- }
-
- // Clear the screen before drawing
- glClear( GL_COLOR_BUFFER_BIT );
-
- shaders();
-
- // Bind the texture to which subsequent calls refer to
- glBindTexture( GL_TEXTURE_2D, texture );
-
- // Use clientside vertex pointers to render two items. In this test we have each
- // attribute in a separate buffer, packed (i.e. stride == 0)
- GLfloat vertexData[] = { 10, 10,
- 300, 10,
- 300, 128,
- 10, 128,
- 410, 10,
- 600, 10,
- 630, 200,
- 310, 250,
- 100, 300,
- 300, 300,
- 300, 400,
- 100, 400 };
- GLfloat textureData[] = { 0, 0,
- 1, 0,
- 1, 1,
- 0, 1,
- 0, 0.5,
- 1, 0.5,
- 1, 1,
- 0.5, 1,
- 0, 0,
- 1, 0,
- 1, 1,
- 0, 1, };
-
- glEnable(GL_TEXTURE_2D); // XXX should be GL_TEXTURE_COORD_ARRAY); and also glEnableClientState! XXX two workarounds here
- glTexCoordPointer(2, GL_FLOAT, 0, textureData);
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(2, GL_FLOAT, 0, vertexData);
-
- glDrawArrays(GL_QUADS, 0, 12);
-
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glDisableClientState(GL_VERTEX_ARRAY);
-
- SDL_GL_SwapBuffers();
-
-#if !EMSCRIPTEN
- // Wait for 3 seconds to give us a chance to see the image
- SDL_Delay(3000);
-#endif
-
- // Now we can delete the OpenGL texture and close down SDL
- glDeleteTextures( 1, &texture );
-
- SDL_Quit();
-
- return 0;
-}