2010-06-15 9 views
5

Máy tính xách tay mac của tôi có 1.024.000 pixel. Cách đơn giản nhất để biến màn hình của tôi hoàn toàn là màu đen và đi các loại hạt bằng cách viết các chương trình nhỏ để ghi lại các điểm ảnh cho sự thích thú của trái tim tôi?Tranh ảnh đẹp cấp độ pixel, lập trình

Để làm cho nó cụ thể hơn, giả sử tôi muốn triển khai Chaos Game để vẽ hình tam giác Sierpinski, ở cấp pixel, không có gì khác trên màn hình. Cách để làm điều đó là gì?

+2

Tôi thích các từ viết tắt. –

+2

Tuyệt đối. Tất cả các ngôn từ đều tuyệt vời. (Như một sang một bên, câu trả lời cho phép lặp đi lặp lại cũng được chấp nhận!) – dreeves

+0

+1 cho tiêu đề tuyệt vời. –

Trả lời

2

Chắc chắn một Screen Saver sẽ là một giải pháp tình cờ?

Một cách tiếp cận là tải xuống mã mẫu cho mô-đun trình bảo vệ màn hình và sau đó sử dụng làm mẫu cho trình bảo vệ màn hình của riêng bạn. Bằng cách đó bạn không cần phải viết nhiều hơn mã vẽ thực tế, và bạn sẽ có được mô-đun trình bảo vệ màn hình tùy chỉnh của riêng mình để khởi động.

+1

Có một mẫu trình bảo vệ màn hình trong XCode để xử lý các khái niệm cơ bản - chỉ cần thêm bản vẽ trong 'animateOneFrame'. Mặc dù vậy, các trình bảo vệ màn hình là một loại đau để gỡ lỗi, bởi vì chúng chạy như các mô đun được nạp trong không gian của một ứng dụng khác. Và bản vẽ ở cấp độ điểm ảnh trong Cocoa cũng mất một chút mucking xung quanh. – walkytalky

+0

Đề xuất thông minh! – dreeves

+0

Có thể dễ dàng hơn để tạo một ứng dụng bình thường chạy toàn màn hình (như nhiều trò chơi). Bằng cách đó bạn có thể gỡ lỗi dễ dàng và thậm chí thêm tương tác nếu bạn muốn. –

1

Tôi đang sử dụng C hoặc C++, bạn có thể thực hiện công cụ này với SDL. Nó cho phép truy cập cấp thấp tới các pixel của một cửa sổ hoặc toàn màn hình (cộng với bàn phím, chuột và soundcard) và hoạt động trên hầu hết Windows, OSX và Linux.

Có một số hướng dẫn tuyệt vời về cách sử dụng thư viện này tại http://lazyfoo.net/SDL_tutorials/index.php. Tôi nghĩ bạn muốn hướng dẫn # 31 sau số ít đầu tiên.

1

Cách tốt nhất để sử dụng là GLUT, trình bao bọc nhiều nền tảng thân thiện (hơi) với OpenGL. Dưới đây là một số mã để giải thích một số điểm:

#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; 
} 

Đó là C++ nhưng gần giống với Python và nhiều ngôn ngữ khác.