Compila en Windows. Ja no necessita OpenGL
This commit is contained in:
71
jdraw8.cpp
71
jdraw8.cpp
@@ -1,6 +1,6 @@
|
||||
#include "jdraw8.h"
|
||||
#include "SDL2/SDL_image.h"
|
||||
#include "SDL2/SDL_opengl.h"
|
||||
#include "SDL_image.h"
|
||||
//#include "SDL_opengl.h"
|
||||
#include "jfile.h"
|
||||
#include <fstream>
|
||||
|
||||
@@ -15,52 +15,29 @@ Uint32 contadorFPS = 0;
|
||||
Uint32 tempsFPS = SDL_GetTicks();
|
||||
char *fps = (char *)malloc(10);
|
||||
|
||||
SDL_GLContext gContext;
|
||||
SDL_Window* window = NULL;
|
||||
SDL_Surface* screenSurface = NULL;
|
||||
SDL_Window* sdlWindow = NULL;
|
||||
SDL_Renderer* sdlRenderer = NULL;
|
||||
SDL_Texture* sdlTexture = NULL;
|
||||
|
||||
void JD8_Init(char *title) {
|
||||
screen = (JD8_Surface)calloc( 1, 64000 );
|
||||
main_palette = (JD8_Palette)calloc( 1, 768 );
|
||||
pixel_data = (Uint32*)calloc( 1, 1048576 );
|
||||
pixel_data = (Uint32*)calloc(1, 320 * 200 * 4); // 1048576 );
|
||||
|
||||
//SDL_SetVideoMode( 640, 480, 32, SDL_OPENGL );
|
||||
|
||||
window = SDL_CreateWindow( title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN );
|
||||
gContext = SDL_GL_CreateContext( window );
|
||||
//if( SDL_GL_SetSwapInterval( 1 ) < 0 ) { printf( "Warning: Unable to set VSync! SDL Error: %s\n", SDL_GetError() ); }
|
||||
|
||||
SDL_GL_SetAttribute( SDL_GL_CONTEXT_MAJOR_VERSION, 2 );
|
||||
SDL_GL_SetAttribute( SDL_GL_CONTEXT_MINOR_VERSION, 1 );
|
||||
sdlWindow = SDL_CreateWindow( title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN );
|
||||
sdlRenderer = SDL_CreateRenderer(sdlWindow, -1, 0);
|
||||
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "nearest");
|
||||
SDL_RenderSetLogicalSize(sdlRenderer, 320, 200);
|
||||
|
||||
glClearColor( 0, 0, 0, 0 );
|
||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||
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_ALPHA_SIZE, 8);
|
||||
glMatrixMode( GL_PROJECTION );
|
||||
glLoadIdentity();
|
||||
glOrtho( 0, 320, 200, 0, -1, 1 );
|
||||
glMatrixMode( GL_MODELVIEW );
|
||||
glLoadIdentity();
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
GLuint textureName;
|
||||
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
glGenTextures(1, &textureName);
|
||||
glBindTexture(GL_TEXTURE_2D, textureName);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixel_data);
|
||||
sdlTexture = SDL_CreateTexture(sdlRenderer, SDL_PIXELFORMAT_ABGR8888, SDL_TEXTUREACCESS_STREAMING, 320, 200);
|
||||
}
|
||||
|
||||
void JD8_Quit() {
|
||||
if( screen != NULL ) free( screen );
|
||||
if( main_palette != NULL ) free( main_palette );
|
||||
if( pixel_data != NULL ) free( pixel_data );
|
||||
SDL_DestroyWindow( window );
|
||||
SDL_DestroyRenderer(sdlRenderer);
|
||||
SDL_DestroyWindow( sdlWindow );
|
||||
}
|
||||
|
||||
void JD8_ClearScreen(Uint8 color) {
|
||||
@@ -179,26 +156,12 @@ void JD8_Flip() {
|
||||
for( int x = 0; x < 320; x++ ) {
|
||||
for( int y = 0; y < 200; y++ ) {
|
||||
Uint32 color = 0xFF000000 + main_palette[screen[x + ( y * 320 )]].r + ( main_palette[screen[x + ( y * 320 )]].g << 8 ) + ( main_palette[screen[x + ( y * 320 )]].b << 16 );
|
||||
pixel_data[y + ( x * 512 )] = color;
|
||||
pixel_data[x + ( y * 320 )] = color;
|
||||
}
|
||||
}
|
||||
glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, 512, 512, GL_RGBA, GL_UNSIGNED_BYTE, pixel_data);
|
||||
|
||||
glBegin( GL_QUADS );
|
||||
glTexCoord2f( 0.0, 0.0 );
|
||||
glVertex3f( 0.0, 0.0, 0.0 );
|
||||
|
||||
glTexCoord2f( 0.0, 1.0 );
|
||||
glVertex3f( 512.0, 0.0, 0.0 );
|
||||
|
||||
glTexCoord2f( 1.0, 1.0 );
|
||||
glVertex3f( 512.0, 512.0, 0.0 );
|
||||
|
||||
glTexCoord2f( 1.0, 0.0 );
|
||||
glVertex3f( 0.0, 512.0, 0.0 );
|
||||
glEnd();
|
||||
|
||||
SDL_GL_SwapWindow(window);
|
||||
SDL_UpdateTexture(sdlTexture, NULL, pixel_data, 320 * sizeof(Uint32));
|
||||
SDL_RenderCopy(sdlRenderer, sdlTexture, NULL, NULL);
|
||||
SDL_RenderPresent(sdlRenderer);
|
||||
}
|
||||
|
||||
void JD8_FreeSurface(JD8_Surface surface) {
|
||||
|
||||
Reference in New Issue
Block a user