Sign in to follow this  
BIASxEnvy

OpenGL Problem programming with SDL and OpenGL

Recommended Posts

I have just started programming in C++ while using the SDL and OpenGL libraries. Everything was going fine until my 'raw' OpenGL commands started returning an error in my compiler. The code of my program is below. There are two separate files, "2d3PortalEngine.cpp" and "2D3PortalEngine.h". I do not understand why my OpenGL commands are not working because in the file "SDL_opengl.h", the OpenGL library as well as "windows.h" are already included. I have looked on the forum he as well as the web and have found similar problems, but their solutions are not working. One solution was to add "-lGL" to my linker settings. This did not work, because my compiler told me that it could not find "-lGL". Keep in mind that this program runs perfectly fine until I start making pure OpenGL calls. I have marked where I start having problems with a comment in the code in the file "2D3PortalEngine.h" --------------------- //2D3PortalEngine.cpp #include "2D3PortalEngine.h" #include <iostream> using namespace std; int main(int argc, char* args[]){ // Initializes the engine if(Engine.Init(640, 480, 32, SDL_OPENGL)) // if Initialization is successful, we start our Game Loop while(Engine.bRunning){ Engine.Input(); Engine.EventsHandler(); Engine.Render(); } else // Exits our program. Only happens when bRunning=false SDL_Quit(); return 0; } ---------------------------- ---------------------------- //2d3PortalEngine.h // #ifdef 2D3PortalEngine_h // #define 2D3PortalEngine_h #include "SDL/SDL.h" #include "SDL/SDL_opengl.h" #include <iostream> using namespace std; // This is our EngineEditor class // This takes care of all the Initialization, Input, Event Handling, and Rendering class EngineEditor{ private: public: // bRunning is what tells our program if it is running or not // Our program runs while bRunning=true, if bRunning=false, our program terminates int sWidth, sHeight, bpp, flags; bool bRunning; SDL_Surface *Screen; bool Init(int sWidth, int sHeight, int bpp, int flags); void Input(); void EventsHandler(); void Render(); }Engine; void EngineEditor::Input(){ // SDL_EVENT variable that holds the key input SDL_Event KeyEvent; while(SDL_PollEvent(&KeyEvent)){ // Checks to see if a key was pressed if(KeyEvent.type == SDL_KEYDOWN){ switch (KeyEvent.key.keysym.sym){ // Specific Keypresses go here } break; } // Checks to see if a key was released if(KeyEvent.type == SDL_KEYUP){ switch (KeyEvent.key.keysym.sym){ // Specific KeyUps goes here case SDLK_ESCAPE: Engine.bRunning=false; break; } break; } } return ; } void EngineEditor::EventsHandler(){ return ; } void EngineEditor::Render(){ return ; } bool EngineEditor::Init(int sWidth, int sHeight, int bpp, int flags){ Engine.bRunning = true; SDL_Init(SDL_INIT_EVERYTHING); SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 ); SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8 ); SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 ); SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 32 ); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); Engine.Screen = SDL_SetVideoMode(sWidth, sHeight, bpp, flags); // This is where I am having problems!!! glEnable(GL_TEXTURE_3D); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glViewport(0, 0, sWidth, sHeight); glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0f, sWidth, sHeight, 0.0f, -1.0f, 1.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); SDL_GL_SwapBuffers(); return true; } // #endif

Share this post


Link to post
Share on other sites
post the errors it is spitting out. I don't see you including the gl headers. It could also be that you didn't set the compiler to look in the correct directory for the gl headers, or that you didn't add the gl library path to your linker settings. but paste the errors so we can help

-me

Share this post


Link to post
Share on other sites
Here is a link to the screenshots of the errors as well as what my compiler is linking to.

http://img691.imageshack.us/g/searchdirectorieslinker.gif/

The compiler that I am using is Code::Blocks. The gl headers are included in the SDL_opengl.h header file so I should not have to include them myself, at least for as much as I understand including files to work.

-BiasxEnvy

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this