بسم الله الرحمن الرحيم
لدي برنامج رسم لسفينة كبيرة في البحر
أريد تحويره لانميشن
بحيث ان السفينة تسير من اليسار لليمين
عبر هذا الكود
glTranslatef (spin, 0,0);
لكن أريد تغيير خلفية السماء بحيث تتحول من النهار لليل
طبعًا هنا أريد كود تغيير اللون
هل بامكانكم مساعدتي ؟ :)
واعطائي كود للون فقط
أو إذا كانت لديكم فكرة حول هذا الأمر .. سواء شرط أو عمل
هذا رسم السفينة
#include<windows.h>
#include <stdlib.h>
#include<GL/glut.h>
#include <math.h> // هذه المكتبة ضرورية لرسم الدائرة لأنو فيه دوال رياضية مثل الساين والكوزاين
float PI=3.14159;
float theta,x,y;
void Init()
{
glClearColor(0.376470588235 , 0.482352941176 , 0.545098039216 , 1);
glColor3f(0.0,0.0,1.0);
glPointSize(2.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,100.0,0.0,100.0);
}
void draw()
{
glClear(GL_COLOR_BUFFER_BIT);
//-------------------------------
glColor3f(0.0 , 0.0 , 0.501960784314);
glBegin(GL_QUADS); //البحر :d
glVertex2i(0,0);
glVertex2i(0,25);
glVertex2i(100,25);
glVertex2i(100,0);
glEnd();
//-----------------------
glColor3f(0.0,0.0,0.0);
glBegin(GL_POLYGON); // - الجزء السفلي رسم السفينة
glVertex2i(40,25);
glVertex2i(34,40);
glVertex2i(71,40);
glVertex2i(65,25);
glEnd();
//-----------------------
glColor3f(1.0 , 1.0 , 0.878431372549);
glBegin(GL_QUADS); // الي في النص
glVertex2i(43,40);
glVertex2i(43,44);
glVertex2i(62,44);
glVertex2i(62,40);
glEnd();
glColor3f(0.0,0.0,0.0);
glBegin(GL_LINES);
glVertex2i(43,40);
glVertex2i(43,44);
glVertex2f(43,44);
glVertex2f(62,44);
glVertex2i(62,40);
glVertex2i(62,44);
glEnd();
//-----------------------
glColor3f(1.0 , 1.0 , 0.878431372549);
glBegin(GL_QUADS); //الجزء العلوي
glVertex2i(47,44);
glVertex2i(47,48);
glVertex2i(58,48);
glVertex2i(58,44);
glEnd();
glColor3f(0.0,0.0,0.0);
glBegin(GL_LINES);
glVertex2i(47,44);
glVertex2i(47,48);
glVertex2i(47,48);
glVertex2i(58,48);
glVertex2i(58,48);
glVertex2i(58,44);
glVertex2i(47,44);
glVertex2i(58,44);
glEnd();
//-----------------------
glColor3ub(255,214,129);
glBegin(GL_QUADS); //هادي الي تطلع منها الدخان
glVertex2f(49.0,48.1);
glVertex2i(49,54);
glVertex2i(51,54);
glVertex2f(51.0,48.1);
glEnd();
glColor3ub(255,214,129);
glBegin(GL_QUADS);
glVertex2f(54.0,48.1);
glVertex2i(54,54);
glVertex2i(56,54);
glVertex2f(56.0,48.1);
glEnd();
glColor3f(0.0,0.0,0.0);
glBegin(GL_QUADS);
glVertex2f(49.0,52.1);
glVertex2i(49,54);
glVertex2i(51,54);
glVertex2f(51.0,52.1);
glEnd();
glColor3f(0.0,0.0,0.0);
glBegin(GL_QUADS);
glVertex2f(54.0,52.1);
glVertex2i(54,54);
glVertex2i(56,54);
glVertex2f(56.0,52.1);
glEnd();
//----------------------
//الطيق أو النوافذ ((الدائرية((
glPushMatrix();
glColor3f(0.0,0.0,0.0);
glTranslatef(45.0,42.0,0.0); //لتحديد مكان الدائرة
glutSolidSphere(1.1,20,10); //لرسم الدويرة
glPopMatrix();
glPushMatrix();
glColor3f(0.0,0.0,0.0);
glTranslatef(50.0,42.0,0.0);
glutSolidSphere(1.1,20,10);
glPopMatrix();
glPushMatrix();
glColor3f(0.0,0.0,0.0);
glTranslatef(55.0,42.0,0.0);
glutSolidSphere(1.1,20,10);
glPopMatrix();
glPushMatrix();
glColor3f(0.0,0.0,0.0);
glTranslatef(60.0,42.0,0.0);
glutSolidSphere(1.1,20,10);
glPopMatrix();
//----------------------
glEnable(GL_LINE_STIPPLE); //رسم الخط المتقطع
glLineWidth(1.0);
glColor3f(1.0,1.0,1.0);
glLineStipple(1, 0x00FF);
glBegin(GL_LINES);
glVertex2i(39,28);
glVertex2i(66,28);
glEnd();
glDisable(GL_LINE_STIPPLE);
//----------------------
glPushMatrix();
glColor3f(1.0,1.0,1.0);
glTranslatef(42.0,36.0,0.0);
glutSolidSphere(1.3,20,10);
glPopMatrix();
glPushMatrix();
glColor3f(1.0,1.0,1.0);
glTranslatef(47.0,36.0,0.0);
glutSolidSphere(1.3,20,10);
glPopMatrix();
glPushMatrix();
glColor3f(1.0,1.0,1.0);
glTranslatef(52.0,36.0,0.0);
glutSolidSphere(1.3,20,10);
glPopMatrix();
glPushMatrix();
glColor3f(1.0,1.0,1.0);
glTranslatef(57.0,36.0,0.0);
glutSolidSphere(1.3,20,10);
glPopMatrix();
glPushMatrix();
glColor3f(1.0,1.0,1.0);
glTranslatef(62.0,36.0,0.0);
glutSolidSphere(1.3,20,10);
glPopMatrix();
//---------------------
glPushMatrix();
glColor3f(1.0,1.0,0.0);
glTranslatef(20.0,80.0,0.0);
glutSolidSphere(5.0,20,10);
glPopMatrix();
//---------------------
glBegin(GL_POLYGON); //القمر
glColor3f(1.0,1.0,1.0);
for(theta=0;theta<=(2*PI);theta+=2*PI/1000)
{
x=20+8*cos(theta);
y=80+8*sin(theta);
glVertex2f(x,y);
}
glEnd();
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE |GLUT_RGB);
glutInitWindowSize(400,560);
glutInitWindowPosition(100,100);
glutCreateWindow("TITANIC");
Init();
glutDisplayFunc(draw);
glutMainLoop();
return 0;
}
