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.