2010-06-15 11 views
5

Mi computadora portátil Mac tiene 1.024.000 píxeles. ¿Cuál es la forma más simple de convertir mi pantalla completamente negra y volverme loco con la escritura de pequeños programas para mezclar píxeles para mi alegría?Bonita pintura a nivel de píxel, por definición

Para hacerlo más concreto, digamos que quería implementar el Chaos Game para dibujar un triángulo de Sierpinski, a nivel de píxel, sin nada más en la pantalla. ¿Cuáles son las formas de hacerlo?

+2

I love alliterations. –

+2

Absolutamente. Las aliteraciones son increíbles. (Por si fuera poco, las respuestas a una aliteración deseada también son aceptables) – dreeves

+0

+1 por título increíble. –

Respuesta

2

Sin duda, un protector de pantalla sería una solución tan bueno por casualidad?

Un enfoque sería descargar código de muestra para un módulo de protector de pantalla y luego usarlo como plantilla para su propio protector de pantalla. De esta forma, no tiene que escribir mucho más allá del código de dibujo real, y obtiene su propio módulo de protector de pantalla personalizado para arrancar.

+1

Hay una plantilla de protector de pantalla en XCode que se ocupa de los aspectos básicos: simplemente agrega el dibujo en 'animateOneFrame'. Sin embargo, los protectores de pantalla son difíciles de depurar, ya que se ejecutan como módulos cargados en el espacio de otra aplicación. Y el dibujo a nivel de píxel en Cocoa también requiere un poco de desorden. – walkytalky

+0

Sugerencia inteligente! – dreeves

+0

Puede ser más fácil hacer una aplicación normal que se ejecute en pantalla completa (como muchos juegos). De esa manera puede depurar fácilmente e incluso agregar interactividad si lo desea. –

1

I estás usando C o C++ puedes hacer esto con SDL. Permite el acceso de bajo nivel a los píxeles de una sola ventana o la pantalla completa (más el teclado, el mouse y la tarjeta de sonido) y funciona en la mayoría de Windows, OSX y Linux.

Existen algunos excelentes tutoriales sobre cómo usar esta biblioteca en http://lazyfoo.net/SDL_tutorials/index.php. Creo que quieres el tutorial n. ° 31 después de los primeros.

1

Un buen camino a seguir es GLUT, el envoltorio multiplataforma (ligeramente) amigable para OpenGL. Aquí hay algo de código para girar algunos puntos:

#include <GL/glut.h> 

void 
reshape(int w, int h) 
{ 
    glViewport(0, 0, w, h); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(0, w, 0, h, -1, 1); 
} 

void 
display(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glBegin(GL_POINTS); 
    for (int i = 0; i<399; ++i) 
    { 
     glVertex2i(i, (i*i)%399); 
    } 
    glEnd(); 
    glFlush(); 
} 

int 
main(int argc, char **argv) 
{ 
    glutInit(&argc, argv); 
    glutCreateWindow("some points"); 
    glutDisplayFunc(display); 
    glutReshapeFunc(reshape); 
    glutMainLoop(); 
    return 0; 
} 

Eso es C++, pero debe ser casi idéntico en Python y muchos otros idiomas.

Cuestiones relacionadas