2010-06-15 17 views
5

我的Mac筆記本擁有1,024,000像素。 什麼是最簡單的方法來將我的顯示器完全變黑,並堅持寫一些小程序來旋轉像素以滿足我心中的喜悅?漂亮的像素級繪畫,編程

爲了使它更具體一些,比如我想實現Chaos Game在像素級繪製一個Sierpinski三角形,屏幕上沒有其他東西。 有什麼方法可以做到這一點?

+2

我愛滿足。 – 2010-06-15 20:14:56

+2

絕對如此。 Alliterations非常棒。 (順便說一句,頭頂的答案也可以接受!) – dreeves 2010-06-15 20:57:36

+0

+1的驚人標題。 – 2010-06-15 22:17:04

回答

2

Create Quartz肯定是一個屏幕保護程序將是一個偶然的解決方案?

一種方法是下載屏幕保護程序模塊的示例代碼,然後將其用作您自己屏幕保護程序的模板。這樣你就不必再寫實際的繪圖代碼了,你可以自己定製屏幕保護程序模塊來啓動。

+1

XCode中有一個屏幕保護程序模板,負責處理基本知識 - 只需在「animateOneFrame」中添加圖形。不過,屏幕保護程序在調試時很痛苦,因爲它們在另一個應用程序的空間中作爲加載模塊運行。 Cocoa中的像素級繪圖也需要一點時間。 – walkytalky 2010-06-15 21:32:33

+0

聰明的建議! – dreeves 2010-06-15 22:51:24

+0

使一個運行全屏的普通應用程序(如許多遊戲)更容易。這樣,您可以輕鬆進行調試,甚至可以根據需要添加交互功能。 – 2010-06-17 13:51:09

1

我正在使用C或C++,你可以用SDL來做這個東西。它允許低級別訪問單個窗口或全屏(加上鍵盤,鼠標和聲卡)的像素,並可在大多數Windows,OSX和Linux上運行。

http://lazyfoo.net/SDL_tutorials/index.php有一些關於如何使用這個庫的優秀教程。我認爲你在第一批之後想要第31期教程。

1

一個好的方法是GLUT,這個(略)友好的多平臺包裝到OpenGL。這裏有一些代碼可以讓你知道幾點:

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

這是C++,但它在Python和許多其他語言中應該幾乎相同。