Jump to content
  • Advertisement
Sign in to follow this  
BIASxEnvy

OpenGL Problem programming with SDL and OpenGL

This topic is 3036 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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
Advertisement
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
I believe I finally solved my problem, I went into my linker settings and linked my project with libglu3s.a and libopengl32.a.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!