بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــه ،،
كيف حالك إن شاء الله دائمــاً بخير ؟
أنا حاولت أرسم كائنين في نفس السكربت... لكن الكائن الاول اقدر احركة بالاسهم والكائن الثاني ثابت لا يتحرك
حاولت عدة مرات وتجارب قد شعر الراس لكن كلها أخفقت
ساعدوني رجاءً
وهذا هو الكود نفسه
# pragma comment (lib, "opengl32.lib")
# pragma comment (lib, "glu32.lib") //المكتبات
# pragma comment (lib, "glaux.lib")
#include <windows.h>
#include <stdio.h>
#include <gl\gl.h> //استدعاء المكتبات
#include <gl\glu.h>
#include <gl\glut.h>
#include "in.h"
void moraba3(float x1, float y1, float x2, float y2)//النقاط
{
glBegin(GL_QUADS);
glVertex2f(x1,y1);
glVertex2f(x2,y1); //تحديد النقاط
glVertex2f(x2,y2);
glVertex2f(x1,y2);
glEnd();
}
int DrawGLScene(GLvoid)
{
static float x,y,z = 0.0f;
if (keys[VK_LEFT])
{
x -= 0.1f;
}
if (keys[VK_RIGHT])
{
x += 0.1f;
}
if (keys[VK_UP])
{
y += 0.1f;
}
if (keys[VK_DOWN])
{
y -= 0.1f;
}
if (keys[VK_CONTROL])
{
z -= 0.1f;
}
if (keys[VK_SHIFT])
{
z += 0.1f;
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(x,y,z);
glColor3f(0.1f,2.0f,1.1f); //لون المربع
moraba3(-0.1f,-0.1f,0.1f,0.1f); //رسم المربع
return TRUE;
}
void moraba3a(float x1, float y1, float x2, float y2)//النقاط
{
glBegin(GL_QUADS);
glVertex2f(x1,y1);
glVertex2f(x2,y1); //تحديد النقاط
glVertex2f(x2,y2);
glVertex2f(x1,y2);
glEnd();
}
int DrawGLScene2(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.1f,0.1f,1.1f);
glColor3f(0.1f,2.0f,1.1f); //لون المربع
moraba3a(-0.1f,-0.1f,0.1f,0.1f); //رسم المربع
return TRUE;
}
//الدالة الرئيسية
int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
char NAME_WINDOW[]="Ali Alyas";
int X_WINDOW=640,Y_WINDOW=480,T=16;
MSG msg;
BOOL done=FALSE;
//if(MessageBox(NULL,"FULL?","SBR",MB_YESNO|MB_ICONQUESTION)==IDNO)
// {
fullscreen=FALSE;
// }
if (!CreateGLWindow(NAME_WINDOW,X_WINDOW,Y_WINDOW,T,fullscreen))
{
return 0;
}
while(!done)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message==WM_QUIT)
{
done=TRUE;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else
{
if ((active && !DrawGLScene()) || keys[VK_ESCAPE])
{
done=TRUE;
}
else
{
SwapBuffers(hDC);
}
if (keys[VK_F1])
{
keys[VK_F1]=FALSE;
KillGLWindow();
fullscreen=!fullscreen;
if (!CreateGLWindow(NAME_WINDOW,X_WINDOW,Y_WINDOW,T,fullscreen))
{
return 0;
}
}
}
}
KillGLWindow();
return (msg.wParam);
}