Morten ist da. Wir reden über Windows ultimate. Und Ableton.
Jetzt sieht der Code so aus:
#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <SDL/SDL.h> typedef struct _Color Color; struct _Color { unsigned char r, g, b; }; typedef struct _Point Point; struct _Point { int x, y; }; SDL_Surface *screen; void drawPixel(int x, int y, Color c) { *((Uint32*)((char*)screen->pixels + x*screen->format->BytesPerPixel + y*screen->pitch)) = SDL_MapRGB(screen->format, c.r, c.g, c.b); } void drawLine(Point p1, Point p2, Color c) { int dx, dy; int incx, incy; float m; dx = p2.x - p1.x; dy = p2.y - p1.y; incx = dx>0 ? 1 : -1; incy = dy>0 ? 1 : -1; if(dx == 0){ int y; for(y = p1.y; y != p2.y; y += incy) drawPixel(p1.x, y, c); return; } if(abs(dx)>abs(dy)){ int x; float y; m = (float)dy/(float)abs(dx); y = p1.y; for(x = p1.x; x != p2.x; x += incx){ drawPixel(x, y+0.5f, c); y += m; } }else{ int y; float x; m = (float)dx/(float)abs(dy); x = p1.x; for(y = p1.y; y != p2.y; y += incy){ drawPixel(x+0.5f, y, c); x += m; } } } void drawTriWire(Point p1, Point p2, Point p3, Color c) { drawLine(p1, p2, c); drawLine(p2, p3, c); drawLine(p3, p1, c); } void drawRect(Point p1, Point p2, Color rgb) { int i, j; for(i = p1.x; i < p2.x; i++) for(j = p1.y; j < p2.y; j++) drawPixel(i, j, rgb); } void draw(void) { drawRect((Point){40,40}, (Point){50,50}, (Color) {255, 0, 255}); drawRect((Point){80,40}, (Point){90,50}, (Color) {255, 0, 255}); drawRect((Point){62,60}, (Point){68,80}, (Color) {10, 123, 233}); drawRect((Point){40,95}, (Point){90,100}, (Color) {123, 233, 10}); // drawLine((Point){0, 0}, (Point){50, 30}); // drawLine((Point){0, 0}, (Point){30, 50}); // drawLine((Point){50, 0}, (Point){50, 50}); drawTriWire((Point){10,10}, (Point){100, 70}, (Point){30, 150}, (Color){255, 255, 255}); } int main(void) { int running = 1; int w = 640; int h = 480; SDL_Event event; SDL_Init(SDL_INIT_VIDEO); screen = SDL_SetVideoMode(w, h, 32, SDL_HWSURFACE); while(running){ while(SDL_PollEvent(&event)) if(event.type == SDL_QUIT) running = 0; SDL_LockSurface(screen); draw(); SDL_UnlockSurface(screen); SDL_UpdateRect(screen, 0, 0, 0, 0); } SDL_Quit(); return 0; }
Und das Resutlat so:
Nächste Mal dann Ausfüllen von Dreiecken, 3D-Rotation und Kreise …;
Morten bastelt daran rum, wie ein Spiel unter Windows startet …;
Diesen Freitag ist noch einmal, dann zwei Wochen Pause.