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

طريقة رسم منزل بـ OpenGL

بدأه Mo0ody في 20 أبريل 2011 · 6 رد · 8,523 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أخواني طُلب مني رسم منزل

كما في الصوره

fnyuvc3c749f.jpg

بالـ Open GL

طبعاً انا حاولت بس للأسف الخطوط ماتطلع

الخلفيه قدرت اغير لونها

بس الخطوط ماتطلع أبد

هذا الكود اللي استخدمته

#include<windows.h>
#include<GL/gl.h> 
#include<GL/glu.h>
#include<GL/glut.h>
#include<math.h>

void Drawing()
{
     glClear(GL_COLOR_BUFFER_BIT);
     glBegin(GL_LINE_LOOP);
     glVertex2d(2,4);
	 glVertex2d(8,4);
	 glVertex2d(8,10);
	 glVertex2d(2,10);
     glEnd();
     glFlush();
     }
     void Init()
     {
       glClearColor(1.0,1.0,1.0,0);
          glColor3f(0.0,0.0,0.0);
          glMatrixMode(GL_PROJECTION);
          glLoadIdentity();
          gluOrtho2D(0,800,0,600);
          }
int main()
{
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowSize(500,600);
	glutInitWindowPosition(0,0);
	glutCreateWindow("draw star");
	Init();
	glutDisplayFunc(Drawing);
	glutMainLoop();
	return 0;
}

اتمنى مساعدتكم أخواني

#2

لو كتبت الموضوع فى هذا القسم لوجدت مساعدة افضل

/index.php?showforum=207

بالتوفيق

1


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3

لا أعمل على جهازي الآن ، لكن سأخمّن الأخطاء الممكنة أو التحسينات الممكنة ، يبدو أنه ينبغي تحديد view port ، و أيضاً اختيار قيم مناسبة للرؤوس vertex ، فمثلاً ، انت اخبرت openGL انك تريد العمل على مساحة 800*600 بكسل ، وبنفس الوقت أن تضع قيم صغيرة جداً ، والشيء الثالث ، ينصح دائماً بإستخدام Double Buffer وليس Single Buffer ، جرّب التعديل التالي :

#include<windows.h>
#include<GL/gl.h> 
#include<GL/glu.h>
#include<GL/glut.h>
#include<math.h>

int width  = 500;
int height = 600;
void Drawing()
{
 	glClear(GL_COLOR_BUFFER_BIT);
 	glLoadIdentity();

     glBegin(GL_LINE_LOOP);
	     glVertex2d(100,100);
 		glVertex2d(200,100);
 		glVertex2d(200,200);

 	glEnd();

 	glutSwapBuffers();

}
void Init()
{
	glClearColor(1.0,1.0,1.0,0);
	glColor3f(0.0,0.0,0.0);
	glViewport(0,0,width,height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(0,800,0,600);
}
int main()
{
    	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    	glutInitWindowSize(width,height);
    	glutInitWindowPosition(0,0);
    	glutCreateWindow("draw star");
    	Init();
    	glutDisplayFunc(Drawing);
    	glutMainLoop();
    	return 0;
}

المزيد ،

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#4

اعتذر أخوي محمد ماانتبهت للقسم

عزيزي الشمري

شكراً لمساعدتك

ولكن للأسف

نفس الشي لما انفذ تطلع بيضاء مايوضح شي

#5

قم بألغاء جمله ال glLoadIdentity من داله الرسم حيث انه لا داعي لها انت تستدعيها فقط عند تغيير ال Identity matrix فيصبح الكود

#include<windows.h>
#include<GL/gl.h> 
#include<GL/glu.h>
#include<GL/glut.h>
#include<math.h>
#pragma comment (lib,"OpenGL32.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib,"glut32.lib")
int width  = 500;
int height = 600;
void Drawing()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glBegin(GL_LINE_LOOP);
	glVertex2d(100,100);
	glVertex2d(200,100);
	glVertex2d(200,200);
	glEnd();

	glutSwapBuffers();
}
void Init()
{
	glClearColor(1.0,1.0,1.0,0);
	glColor3f(0.0,0.0,0.0);
	glViewport(0,0,width,height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(0,800,0,600);
}
int main()
{
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
	glutInitWindowSize(width,height);
	glutInitWindowPosition(0,0);
	glutCreateWindow("draw star");
	Init();
	glutDisplayFunc(Drawing);
	glutMainLoop();
	return 0;
}
1
#6

طيب اخوي

ابي الاحداثيات

تكون قليله

glVertex2d(100,100);

glVertex2d(200,100);

glVertex2d(200,200);

ابيها تكون 1 او 2 او 4

#7

مشكور اخوي تم حلها

والحمدلله نفذت وزبط

شكراً لك عزيزي

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