elham.sha
سه شنبه 12 دی 1391, 21:42 عصر
سلام
من یه برنامه نوشتم که میاد یه pattern رو تو کل صفحه تکرار می کنه. ولی من می خوام این pattern تو یه لوزی تکرار بشه. در واقع یه لوزی کاشی کاری بشه. نمیدونم باید چی کار کنم.
#include "stdafx.h"
#include "stdlib.h"
#include "GL/glut.h"
#include "math.h"
int p1[] = {300,0};
int p2[] = {0,300};
int p3[] = {300,600};
int p4[] = {600,300};
void line_loop (void)
{
glColor3f (0.0 , 0.0 , 0.0 );
glLineWidth (10);
glBegin (GL_LINE_LOOP);
glVertex2iv (p1);
glVertex2iv (p2);
glVertex2iv (p3);
glVertex2iv (p4);
glEnd ();
glFlush ();
}
void display(void)
{
GLubyte fly[] = {
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x10 , 0x00 , 0x00 ,
0x00 , 0x38 , 0x00 , 0x00 ,
0x00 , 0x3c , 0x00 , 0x00 ,
0x00 , 0x3c , 0x10 , 0x00 ,
0x00 , 0x23 , 0x08 , 0x00 ,
0x00 , 0x20 , 0xc8 , 0x00 ,
0x00 , 0x20 , 0x48 , 0x00 ,
0x00 , 0x20 , 0x3c , 0x00 ,
0x00 , 0x20 , 0x14 , 0x00 ,
0x00 , 0x20 , 0x06 , 0x00 ,
0x00 , 0x20 , 0x06 , 0x00 ,
0x00 , 0x20 , 0x07 , 0x00 ,
0x00 , 0x30 , 0x03 , 0x00 ,
0x00 , 0x30 , 0x00 , 0x00 ,
0x00 , 0x30 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
};
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 1.0, 1.0);
glEnable(GL_POLYGON_STIPPLE);
glPolygonStipple(fly);
glRectf(1000.0, 600.0, 0.0, 0.0);
glDisable(GL_POLYGON_STIPPLE);
glFlush();
}
void init (void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glShadeModel(GL_FLAT);
}
void reshape(int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(600 , 600 );
glutCreateWindow(argv[0]);
init();
glutDisplayFunc (line_loop);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
من یه برنامه نوشتم که میاد یه pattern رو تو کل صفحه تکرار می کنه. ولی من می خوام این pattern تو یه لوزی تکرار بشه. در واقع یه لوزی کاشی کاری بشه. نمیدونم باید چی کار کنم.
#include "stdafx.h"
#include "stdlib.h"
#include "GL/glut.h"
#include "math.h"
int p1[] = {300,0};
int p2[] = {0,300};
int p3[] = {300,600};
int p4[] = {600,300};
void line_loop (void)
{
glColor3f (0.0 , 0.0 , 0.0 );
glLineWidth (10);
glBegin (GL_LINE_LOOP);
glVertex2iv (p1);
glVertex2iv (p2);
glVertex2iv (p3);
glVertex2iv (p4);
glEnd ();
glFlush ();
}
void display(void)
{
GLubyte fly[] = {
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x10 , 0x00 , 0x00 ,
0x00 , 0x38 , 0x00 , 0x00 ,
0x00 , 0x3c , 0x00 , 0x00 ,
0x00 , 0x3c , 0x10 , 0x00 ,
0x00 , 0x23 , 0x08 , 0x00 ,
0x00 , 0x20 , 0xc8 , 0x00 ,
0x00 , 0x20 , 0x48 , 0x00 ,
0x00 , 0x20 , 0x3c , 0x00 ,
0x00 , 0x20 , 0x14 , 0x00 ,
0x00 , 0x20 , 0x06 , 0x00 ,
0x00 , 0x20 , 0x06 , 0x00 ,
0x00 , 0x20 , 0x07 , 0x00 ,
0x00 , 0x30 , 0x03 , 0x00 ,
0x00 , 0x30 , 0x00 , 0x00 ,
0x00 , 0x30 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
0x00 , 0x00 , 0x00 , 0x00,
};
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 1.0, 1.0);
glEnable(GL_POLYGON_STIPPLE);
glPolygonStipple(fly);
glRectf(1000.0, 600.0, 0.0, 0.0);
glDisable(GL_POLYGON_STIPPLE);
glFlush();
}
void init (void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glShadeModel(GL_FLAT);
}
void reshape(int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(600 , 600 );
glutCreateWindow(argv[0]);
init();
glutDisplayFunc (line_loop);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}