Tach Zusammen
Eine kurze Frage an euch:
Ich möchte mich wieder ein bisschen mit OpenGL auseinandersetzen und habe deshalb ein SDL-Projekt aufgesetzt.
Ich hatte vor die SDL fürs Erzeugen des Fenster und fürs Input-Handling zu verwenden und zum konkreten rendern dann OpenGL.
Ich bin mir aber jetzt bezüglich dem Verwenden von OpenGL nicht sicher: Brauche ich nun neben der SDL noch weitere Libs wie z.B. GLUT oder GLEW oder kann ich OpenGL direkt über die SDL verwenden? Den auf opengl.org ist die SDL als Windwostoolkit neben CPW aufgeführt (https://www.opengl.org/resources/librar ... wtoolkits/).
Falls man doch noch zusätzliche Libs benötigt, zu was würdet ihr mir da raten?
Ich habe mir GLEW angeschaut, doch da besteht das Problem, dass man die Files nur über Sourcefrage downloaden kann - und die haben ja bekanntermassen ein Malware/Addware Problem.
Wie stehts um CPW?
Ich habe jetzt noch nicht die grossen Ambitionen. Ich möchte nur mal wieder ein bisschen meine Programmier-Kenntnisse auffrischen und etwas Grafik Programmieren.
Quasi Persönliche Grundlagenforschung betreiben. :-)
Etwas das jetzt nicht so den grossen Overhead mit sich zieht und leicht zu handhaben ist wäre daher wünschenswert :-)
Gruss starcow
OpenGL unter SDL
- xq
- Establishment
- Beiträge: 1582
- Registriert: 07.10.2012, 14:56
- Alter Benutzername: MasterQ32
- Echter Name: Felix Queißner
- Wohnort: Stuttgart & Region
- Kontaktdaten:
Re: OpenGL unter SDL
Hey!
Ich persönlich nutze immer SDL2 in Kombination mit gl3w (https://github.com/skaslev/gl3w).
SDL2 hat die bessere API (mehrere Fenster, einige überarbeitete Sachen, OpenGL-Kontext-Erstellung ist einfacher). gl3w brauchst du, wenn man irgendwas mit opengl extensions oder > OpenGL 3 arbeiten will und ist imho der flachste und angenehmste Wrapper/Loader den es gibt.
Ich hab mal was aus nem Projekt rausgerissen:
Ich nutze hier zwar OpenGL ES, aber es macht praktisch keinen Unterschied, muss man bei der Initialisierung das Flag wegnehmen, dann geht das auch mit klassischem OpenGL.
Grüße
Felix
Ich persönlich nutze immer SDL2 in Kombination mit gl3w (https://github.com/skaslev/gl3w).
SDL2 hat die bessere API (mehrere Fenster, einige überarbeitete Sachen, OpenGL-Kontext-Erstellung ist einfacher). gl3w brauchst du, wenn man irgendwas mit opengl extensions oder > OpenGL 3 arbeiten will und ist imho der flachste und angenehmste Wrapper/Loader den es gibt.
Ich hab mal was aus nem Projekt rausgerissen:
Code: Alles auswählen
void Framework::initialize()
{
if(SDL_Init(SDL_INIT_EVERYTHING) != 0) {
throw InitializationException(SDL_GetError());
}
atexit(SDL_Quit);
this->mWindow = SDL_CreateWindow(
"Destoroya - Tank war arising",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
this->mScreenSize.x, this->mScreenSize.y,
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
if(this->mWindow == nullptr) {
throw InitializationException("Failed to create window.");
}
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); // Das hier ausschalten für OpenGL ;)
this->mContext = SDL_GL_CreateContext(this->mWindow);
if(this->mContext == nullptr) {
SDL_DestroyWindow(this->mWindow);
throw InitializationException(SDL_GetError());
}
// Register OpenGL debugging callback.
#if defined(GL_KHR_debug)
glDebugMessageCallbackKHR(printOpenGLDebug, nullptr);
glEnable(GL_DEBUG_OUTPUT_KHR);
#endif
/*
static struct {
int major, minor;
} version;
*/
// glGetIntegerv(GL_MAJOR_VERSION, &version.major);
// glGetIntegerv(GL_MINOR_VERSION, &version.minor);
std::cout << "OpenGL Version: " << glGetString(GL_VERSION) << std::endl;
// std::cout << "OpenGL Version: " << version.major << "." << version.minor << std::endl;
std::cout << "GLSL Version: " << glGetString(GL_SHADING_LANGUAGE_VERSION) << std::endl;
std::cout << "Renderer: " << glGetString(GL_RENDERER) << std::endl;
std::cout << "Vendor: " << glGetString(GL_VENDOR) << std::endl;
}
void Framework::render()
{
glViewport(0, 0, this->mScreenSize.x, this->mScreenSize.y);
glClearColor(0.0f, 0.0f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
if(this->mCurrentState != nullptr) {
this->mDebugDraw->makeCurrent();
this->mCurrentState->render(this->mGraphics);
}
SDL_GL_SwapWindow(this->mWindow);
}
Grüße
Felix
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…
Programmiert viel in Zig und nervt Leute damit.
Programmiert viel in Zig und nervt Leute damit.
- starcow
- Establishment
- Beiträge: 534
- Registriert: 23.04.2003, 17:42
- Echter Name: Mischa Schaub
- Kontaktdaten:
Re: OpenGL unter SDL
Super! Ich danke dir Felix! :-)
Verstehe ich das richtig, das ich Python installieren muss, damit mir im Anschluss dann die verschiedenen inculde Files erstellt werden?
Zum Ausführen von meinem compilierten Programm muss dann aber kein Python mehr installiert sein?
Gruss starcow
Verstehe ich das richtig, das ich Python installieren muss, damit mir im Anschluss dann die verschiedenen inculde Files erstellt werden?
Zum Ausführen von meinem compilierten Programm muss dann aber kein Python mehr installiert sein?
Gruss starcow
- xq
- Establishment
- Beiträge: 1582
- Registriert: 07.10.2012, 14:56
- Alter Benutzername: MasterQ32
- Echter Name: Felix Queißner
- Wohnort: Stuttgart & Region
- Kontaktdaten:
Re: OpenGL unter SDL
Ja genau. Das phython-skript ist nen "fauler" trick, damit hast du danach auf jeden Fall die aktuellen Header und der Repo maintainer braucht sich darum nicht zu kümmern.
Das Skript läuft mit Phyton2 und Phyton3
Das Skript läuft mit Phyton2 und Phyton3
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…
Programmiert viel in Zig und nervt Leute damit.
Programmiert viel in Zig und nervt Leute damit.