[C con Clase] SDL 2

Borja Ilundain borjailundain en gmail.com
Lun Nov 11 00:06:01 CET 2013


Hola!

Con SDL 2.0 es más sencillo que todo eso dibujar pixels o líneas, no
necesitas manipular los pixels de esa manera salvo que quieras actualizar
directamente una textura o superficie.
Para dibujar puntos, líneas o rectángulos sobre la pantalla, usa:
1) SDL_SetRenderDrawColor(SDL_Renderer* renderer, Uint 8 r, Uint8 g, Uint8
b, Uint8 a)
//Con esta función defines el color con el que el renderer realizará las
operaciones de SDL_RenderDrawPoint, SDL_RenderDrawLine, etc... y también
SDL_RenderClear.

2) Después usa la función adecuada para dibujar un punto, línea, rectángulo
o serie de éstos, echa un vistazo a http://wiki.libsdl.org/CategoryRender para
consultar todas las funciones disponibles.

Espero haber servido de ayuda, la verdad es que SDL 2.0 todavía no está
demasiado documentado y migrar de la 1.2 a la 2.0 cuesta un poco al
principio, pero luego resulta fácil.

Un saludo.


2013/11/10 Hl3 <halowin3 en gmail.com>

> Hola Asdruba, gracias por responder.
> Lo acabo de conseguir, dejo aqui el programa por si le puede ayudar a
> alguien.
>
> #include <stdio.h>
> #include <SDL2/SDL.h>
> //#include <SDL2/SDL_image.h>
> #include<math.h>
>
>
> #define PI 3.141592
> #define SCREEN_WIDTH 640
> #define SCREEN_HEIGHT 480
>
> int main(int argc, char **argv){
>         int x,y;
>         double fx,angulo;
> //      Uint8* posicion;
>         Uint32 color;
>
>         SDL_Window *win = SDL_CreateWindow("y=sin(x)", 100,100, 640, 480,
> 0);
>
>
> //      SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION,"info",
> "Window creada",win);
>         SDL_Renderer *ren = SDL_CreateRenderer(win, -1,
> SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
>
>         /* Create surface */
>         SDL_Surface *surface =
> SDL_CreateRGBSurface(0,SCREEN_WIDTH,SCREEN_HEIGHT,32,0,0,0,0);
>
>         //get the pixels
>         Uint32 *pixels = (Uint32*)surface->pixels;
>
>         /* Lock the surface */
>         SDL_LockSurface(surface);
>
>         color = SDL_MapRGB(surface->format, 255, 0, 0);
>         for(x=0;x<360;x++){
>                 angulo=x*PI/180;
>                 fx=240+50*sin(angulo);
>                 y=round(fx);
>                 pixels[ ( y * surface->w ) + x ] = color;
>         }
>
>         /* Unlock the surface */
>         SDL_UnlockSurface(surface);
>
>         //imprescindible
>         SDL_Texture *tex = SDL_CreateTextureFromSurface(ren, surface);
>         SDL_RenderCopy(ren,tex,NULL,NULL);
>
>         //imprescindible
>         SDL_RenderPresent(ren);
>
>         SDL_Delay(10000);
>
>   return 0;
>
> }
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20131111/3528c243/attachment.html>


Más información sobre la lista de distribución Cconclase