Après tout, j'ai réussi à trouver un simple morceau de code qui montre comment dessiner une image 2D avec openGL:
#include "SDL/SDL.h"
#include "SDL/SDL_opengl.h"
#include "SDL/SDL_image.h"
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;
int tex;
int loadTexture(char* fileName){
SDL_Surface *image=IMG_Load(fileName);
SDL_DisplayFormatAlpha(image);
GLuint object;
glGenTextures(1,&object);
glBindTexture(GL_TEXTURE_2D,object);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,image->w,image ->h,0,GL_RGBA,GL_UNSIGNED_BYTE,image->pixels);
SDL_FreeSurface(image);
return object;
}
void init(){
glClearColor(0.0,0.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0,800,600,1.0,-1.0,1.0);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
tex = loadTexture("hi.png");
}
void draw(){
glClear(GL_COLOR_BUFFER_BIT);
glBindTexture(GL_TEXTURE_2D,tex);
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex2f(0,0);
glTexCoord2f(1,0);
glVertex2f(500,0);
glTexCoord2f(1,1);
glVertex2f(500,500);
glTexCoord2f(0,1);
glVertex2f(0,500);
glEnd();
glFlush();
}
int main(int argc,char** argv){
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Surface* screen=SDL_SetVideoMode(800,600,32,SDL_SWSURFACE|SDL_OPENGL);
bool running=true;
Uint32 start;
SDL_Event event;
init();
while(running){
start=SDL_GetTicks();
draw();
while(SDL_PollEvent(&event)){
switch(event.type){
case SDL_QUIT:
running=false;
break;
}
}
SDL_GL_SwapBuffers();
if(1000/60>(SDL_GetTicks()-start))
SDL_Delay(1000/60-(SDL_GetTicks()-start));
}
SDL_Quit();
return 0;
}
Je n'ai pas d'expérience en 2D et il y a environ une semaine, j'ai commencé à jouer avec SDL. Construit des structures simples pour avoir des images, qui seraient sur des calques, afin que je puisse avoir mon propre ordre de dessin, afin que les sprites soient dessinés après l'arrière-plan, etc., puis fait un petit "moteur de sprite". J'ai eu un sprite Megaman marchant à gauche et à droite comme je le voulais, au-dessus d'une simple image d'arrière-plan 900x900ish.
Le truc, c'est que le CPU a presque atteint 20% sur mon i5 ... alors j'ai pensé à utiliser la carte graphique pour faire le dessin! Abit fouillé dans OpenGL et aujourd'hui, a finalement réussi à faire fonctionner gl3w!
Alors maintenant, je cherche un moyen simple d'afficher mes sprites / images, sur la fenêtre, en utilisant OpenGL. J'ai essayé toutes sortes de codes que j'ai rencontrés, mais je ne peux rien afficher, malgré le fait que j'ai fait des vérifications d'erreurs pratiquement partout, et tout semble vérifier que tout va bien!
TL: DR; Je cherchais un code de travail simple, en utilisant SDL, sur la façon de dessiner des images 2D (qui, si cela ne fonctionne pas, c'est sûr que j'ai quelque chose de mal).
Merci!