الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود بسيط في الOpenGL

مغلق
بدأه sweet lips في 29 يوليو 2005 · 0 رد · 932 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم

كيف الحال إن شاء الله بخير

بليييييييييييييييييييييييييييييييييييييييييييييييييييز ابغاكم تساعدوني في شرح هذا البرنامج وتفيدوني اذا عندكم خلفيه بس كمان بليز ياليت بسرعه لانه عندي شرح فيه يوم السبت وانا من اول احاول ادخل على المنتدى بس ما كان يفتح معايا فرجاءً ساعدوا اختكم المسكينه وافيدوها وشكرا للجميع وهذا ايميلي للي يقدر يعطيني اي فكره عن الموضوع بسرعه Flowers_queen 2005@hotmail.com

#include <GL/glut.h>

GLfloat mat_red_diffuse[] = { 0.7, 0.0, 0.1, 1.0 };

GLfloat mat_green_diffuse[] = { 0.0, 0.7, 0.1, 1.0 };

GLfloat mat_blue_diffuse[] = { 0.0, 0.1, 0.7, 1.0 };

GLfloat mat_yellow_diffuse[] = { 0.7, 0.8, 0.1, 1.0 };

GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };

GLfloat mat_shininess[] = { 100.0 };

GLfloat knots[8] = { 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0 };

GLfloat pts1[4][4][3], pts2[4][4][3];

GLfloat pts3[4][4][3], pts4[4][4][3];

GLUnurbsObj *nurb;

int u, v;

static void

display(void)

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glCallList(1);

glFlush();

}

int

main(int argc, char **argv)

{

glutInit(&argc, argv);

glutCreateWindow("molehill");

glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);

glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

glEnable(GL_DEPTH_TEST);

glEnable(GL_AUTO_NORMAL);

glEnable(GL_NORMALIZE);

nurb = gluNewNurbsRenderer();

gluNurbsProperty(nurb, GLU_SAMPLING_TOLERANCE, 25.0);

gluNurbsProperty(nurb, GLU_DISPLAY_MODE, GLU_FILL);

/* Build control points for NURBS mole hills. */

for(u=0; u<4; u++) {

for(v=0; v<4; v++) {

/* Red. */

pts1[v][0] = 2.0*((GLfloat)u);

pts1[v][1] = 2.0*((GLfloat)v);

if((u==1 || u == 2) && (v == 1 || v == 2))

/* Stretch up middle. */

pts1[v][2] = 6.0;

else

pts1[v][2] = 0.0;

/* Green. */

pts2[v][0] = 2.0*((GLfloat)u - 3.0);

pts2[v][1] = 2.0*((GLfloat)v - 3.0);

if((u==1 || u == 2) && (v == 1 || v == 2))

if(u == 1 && v == 1)

/* Pull hard on single middle square. */

pts2[v][2] = 15.0;

else

/* Push down on other middle squares. */

pts2[v][2] = -2.0;

else

pts2[v][2] = 0.0;

/* Blue. */

pts3[v][0] = 2.0*((GLfloat)u - 3.0);

pts3[v][1] = 2.0*((GLfloat)v);

if((u==1 || u == 2) && (v == 1 || v == 2))

if(u == 1 && v == 2)

/* Pull up on single middple square. */

pts3[v][2] = 11.0;

else

/* Pull up slightly on other middle squares. */

pts3[v][2] = 2.0;

else

pts3[v][2] = 0.0;

/* Yellow. */

pts4[v][0] = 2.0*((GLfloat)u);

pts4[v][1] = 2.0*((GLfloat)v - 3.0);

if((u==1 || u == 2 || u == 3) && (v == 1 || v == 2))

if(v == 1)

/* Push down front middle and right squares. */

pts4[v][2] = -2.0;

else

/* Pull up back middle and right squares. */

pts4[v][2] = 5.0;

else

pts4[v][2] = 0.0;

}

}

/* Stretch up red's far right corner. */

pts1[3][3][2] = 6;

/* Pull down green's near left corner a little. */

pts2[0][0][2] = -2;

/* Turn up meeting of four corners. */

pts1[0][0][2] = 1;

pts2[3][3][2] = 1;

pts3[3][0][2] = 1;

pts4[0][3][2] = 1;

glMatrixMode(GL_PROJECTION);

gluPerspective(55.0, 1.0, 2.0, 24.0);

glMatrixMode(GL_MODELVIEW);

glTranslatef(0.0, 0.0, -15.0);

glRotatef(330.0, 1.0, 0.0, 0.0);

glNewList(1, GL_COMPILE);

/* Render red hill. */

glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_red_diffuse);

gluBeginSurface(nurb);

gluNurbsSurface(nurb, 8, knots, 8, knots,

4 * 3, 3, &pts1[0][0][0],

4, 4, GL_MAP2_VERTEX_3);

gluEndSurface(nurb);

/* Render green hill. */

glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_green_diffuse);

gluBeginSurface(nurb);

gluNurbsSurface(nurb, 8, knots, 8, knots,

4 * 3, 3, &pts2[0][0][0],

4, 4, GL_MAP2_VERTEX_3);

gluEndSurface(nurb);

/* Render blue hill. */

glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_blue_diffuse);

gluBeginSurface(nurb);

gluNurbsSurface(nurb, 8, knots, 8, knots,

4 * 3, 3, &pts3[0][0][0],

4, 4, GL_MAP2_VERTEX_3);

gluEndSurface(nurb);

/* Render yellow hill. */

glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_yellow_diffuse);

gluBeginSurface(nurb);

gluNurbsSurface(nurb, 8, knots, 8, knots,

4 * 3, 3, &pts4[0][0][0],

4, 4, GL_MAP2_VERTEX_3);

gluEndSurface(nurb);

glEndList();

glutDisplayFunc(display);

glutMainLoop();

return 0; /* ANSI C requires main to return int. */

}

هذا الموضوع مغلق.

مواضيع مشابهة