Problem programming with SDL and OpenGL
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
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
-me
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
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
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement