用C++语言改编了一个python版本的艺术画opengl实现,代码与效果如下
感觉用c++绘制速度就是快
#include <math.h> #include <GL/glut.h> int W, H, R; void init() { glClearColor(1, 1, 1, 1); } void drawFunc() { float r; glClear(GL_COLOR_BUFFER_BIT); glColor3f(0, 0, 0); glBegin(GL_POINTS); for(float x = -R; x <= R; x += 0.04) { for(float y = -R; y <= R; y += 0.04) { r = cos(x) + sin(y); glColor3f( cos(y * r), cos( x * y * r), sin( x * r) ); glVertex2f(x, y); } } glEnd(); glFlush(); } void reshape(int w, int h) { if (h <= 0) h = 1; glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) gluOrtho2D(-R, R, -R * h / w, R * h / w); else gluOrtho2D(-R * w / h, R * w / h, -R, R); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void keyboard(unsigned char key, int x, int y) { if (key == 27 || key == 'q') exit(0); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowPosition(20, 20); glutInitWindowSize(W, H); glutCreateWindow("Artist Drawer"); glutReshapeFunc(reshape); glutDisplayFunc(drawFunc); glutKeyboardFunc(keyboard); W = H = 500; R = 10; init(); glutMainLoop(); }
原文:http://blog.csdn.net/miscclp/article/details/44654701