2010-06-15 19 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和许多其他语言中应该几乎相同。