Симпатичное рисование изображения пиксельного уровня, программно

Мой ноутбук Mac имеет 1 024 000 пикселей. Что самый простой путь состоит в том, чтобы повернуть мой абсолютно черный дисплей и сойти с ума с записью небольших программ для вертения пикселей к восхищению моей основы?

Для создания этого более конкретным скажите, что я хотел реализовать Игру Хаоса для рисования Треугольника Серпинского, на пиксельном уровне, ни с чем иным на экране. Что пути состоят в том, чтобы сделать это?

5
задан Cœur 22 January 2019 в 06:42
поделиться

5 ответов

2
ответ дан 14 December 2019 в 01:02
поделиться

Если вы используете C или C ++, вы можете делать это с SDL . Он обеспечивает низкоуровневый доступ к пикселям одного окна или полноэкранного режима (плюс клавиатура, мышь и звуковая карта) и работает в большинстве Windows, OSX и Linux.

Есть несколько отличных руководств по использованию этой библиотеки на http://lazyfoo.net/SDL_tutorials/index.php . Думаю, вам нужен урок №31 после нескольких первых.

1
ответ дан 14 December 2019 в 01:02
поделиться

Возможно, выберите Processing

3
ответ дан 14 December 2019 в 01:02
поделиться

Разве экранная заставка может быть случайным решением?

Один из подходов - загрузить образец кода для модуля экранной заставки, а затем использовать его в качестве шаблона для вашей собственной экранной заставки. Таким образом, вам не придется писать намного больше, чем фактический код рисования, и вы получите свой собственный модуль экранной заставки для загрузки.

2
ответ дан 14 December 2019 в 01:02
поделиться

Хороший способ - 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 и многих других языках.

1
ответ дан 14 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: