OpenGL: Difference between revisions
Levidsmith (talk | contribs) |
Levidsmith (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
I am attempting to integrate OpenGL into the code, so that the game uses hardware graphics acceleration. Hopefully, this will improve some of the framerate issues. | I am attempting to integrate OpenGL into the code, so that the game uses hardware graphics acceleration. Hopefully, this will improve some of the framerate issues. | ||
This will also allow me to use Fraps to make videos of the game to post to YouTube. | |||
Below, I have documented the process I went through to enable OpenGL, including all of the issues I came across. | Below, I have documented the process I went through to enable OpenGL, including all of the issues I came across. |
Revision as of 04:37, 14 February 2010
I am attempting to integrate OpenGL into the code, so that the game uses hardware graphics acceleration. Hopefully, this will improve some of the framerate issues.
This will also allow me to use Fraps to make videos of the game to post to YouTube.
Below, I have documented the process I went through to enable OpenGL, including all of the issues I came across.
Get code to compile with a single line of OpenGL
I can compile a program using #include "SDL_opengl.h", but I am getting errors about missing functions when an OpenGL method is called.
I installed the OpenGL libraries in cygwin, so I'm not sure if those were necessary:
Installing these files may help
http://www.libsdl.org/extras/win32/cygwin/
Found out that I was using the wrong parameters to compile. I should have been using this:
gcc test.c `sdl-config --libs --cflags` -lglut32 -lglu32 -lopengl32
Display a bitmap to the screen
I got a simple square to display in OpenGL:
Added Tux:
Tux on an image background:
One of the vertices was off, which made the background skewed.
Moving Block
Next Step is to get the player block moving
Pseudo Code:
INTEGER playerX INTEGER playerY INTEGER playerVelocityX INTEGER playerVelocityY Setup_SDL Setup_OpenGL Load_Bitmaps GameLoop { While (User hasn't Quit) { IF (User presses up) THEN playerVelocityY = - PLAYER_SPEED IF (User presses down) THEN playerVelocityY = PLAYER_SPEED IF (User presses left) THEN playerVelocityX = - PLAYER_SPEED IF (User presses right) THEN playerVelocityX = PLAYER_SPEED playerX = playerX + playerVelocityX playerY = playerY + playerVelocityY Render_Screen } }
Change BMP to PNG
Next step is to replace the BMP with a PNG
Some "gotchas"
- Add "IMG_Init(IMG_INIT_PNG);" to the program's startup code
- Replace "SDL_LoadBMP" with "IMG_Load"
- Add -lSDL_image on the compile line (Makefile or go script)
- Add required DLLs to the working directory (libpng12-0.dll, zlib1.dll, SDL_image.dll, etc)
- If the PNG will not display, try passing a BMP to IMG_Load to see if it works
Got SDL and OpenGL to accept the PNG image with transparency, but there are display issues:
PNG with transparency disabled, and background color saved. Basic image is correct, but some discoloration.