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

سؤال عن الخطوة التالية في Opengl 3.0

بدأه مصفوفة في 17 يوليو 2009 · 6 رد · 1,796 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

لقد أشتريت كرت نفيديا جي فوس 9500 جي تي وذلك بعد ان علمت من خلال موقع نفيديا اني حتى أحصل على دعم ل openGL 3.1 والذي قبله يجب ان يتوفر أحد الكروت التالية ومنها جي فورس التسلسل له فوق 8000 وركبته ولله الحمد حملت الدرايفر ل openGL 3.1 وفتحت Qt وجربت إختبار الدعم ل openGL3.0 لأنه مضمن في Qt والحمدالله نفع طريقة الإختبار التالي:-

	qDebug()<<(QGLFormat::openGLVersionFlags()>=4096);

اذا كان الناتج true فإن اصدارك يكون openGL3.0 أو أعلى

والا فلا .

والى الآن شاكك جربت كود فيه begin و end ونفع هل هذا طبيعي :huh:

واذا سمحتم اذا كان عندكم برامج للإختبار فأعطوني إياها اريد ان اتأكد من صحة الدعم ..

سؤال أخير وأعذروني هل انتظر الكتاب الأحمر ام هناك طرق أخرى للتعلم ياريت تدلوني ...

وإقتراح لكم إخواني لماذا لا ننتقل للعمل على QtOpenGL عشان العالم الغلابة الا تستخدم لينوكس ونستغل قدرات Qt :rolleyes:

وشكرا لكم والسلام عليكم

1

بسم الله الرحمن الرحيم

مدونة دوال

كيوتي العربي

#2

وعليكم السلام ورحمة الله وبركاته .

الحين مستعجل .. لكن شوف هذه المواقع .. ستجد مثال :

http://www.gamedev.net/community/forums/to...topic_id=512890

طرحت تجربتي في موضوع OpenGL 3.0

جرّب المثال .. وأخبرنا بالنتيجة .. سأحاول الرد على بقيّة النقاط بعدين ... ( ان شاء الله ) .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

جزاك الله خير ...

طبقت درس nehe الأول وذلك بعد ان ترجمته الى Qt فيصبح الكود هكذا

GL3::GL3(QWidget *parent)
	: QGLWidget(parent)
{
	this->showFullScreen();
}

 void GL3::paintGL ()
 {
	 //draw here
}

 void GL3::resizeGL(int width, int height)
 {
	 glViewport(0,0,width,height);
	 glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
 }

GL3::~GL3()
{

}

وأشتغل معي تمام

مكان draw أريد ان أجرب كود رسم بسيط بإستخدام openGL 3.0

لا أدري هل يتوفر منوال ل openGL 3.0.

وجزاك الله خير ..

بسم الله الرحمن الرحيم

مدونة دوال

كيوتي العربي

#4

بشرى سارة نزل الكتاب التالي

OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1 (7th Edition)

بالعربي الكتاب الأحمر للنسختين 3.0 و 3.1 سعر النسخة 51 دولار

رابط الكتاب على أمازون

والسلام عليكم ...

تم تعديل هذه المشاركة بواسطة مصفوفة في 18 يوليو 2009 في 16:20

بسم الله الرحمن الرحيم

مدونة دوال

كيوتي العربي

#5

الله يبشرك بالخير ... حتى لو لم نحصل على الكتاب , سنجد الدروس المجانية بعد هذا الكتاب ان شاء الله .

- بالنسبة لـ QT , أظنها لاتدعم OpenGL 3 ( مش متأكد ) , ولكن من خلال البحث لم أجد شيء .

المشكلة هي في Context الخاص بمكتبة OpenGL , حيث تغيّرت طريقة انشاءه .. وهو ماتقوم QT بتغليفه .

هل يمكنك أن تعيد كتابة الـ Method الخاصة بتهيئة OpenGL .. بحيث تدعم الجيل الثالث ؟!

- هل يمكن أن ترفق الكود الذي جرّبت كاملاً + وماهي رقم نسخة QT التي لديك .

- تجربتي السابقة ( نفس كرت الشاشة لديك و نفس الـ Driver , لكن حصلت مشاكل أثناء التشغيل وليس الترجمة ) .

- من المفترض أن لاتستخدم glBegin ولا glEnd .. وأن لا تستدعي الملف الرأسي gl.h أصلاً .. البديل هو gl3.h

- حالياً , أفضل مصدر هو Specification الخاص بمكتبة OpenGL .

http://www.khronos.org/opengl

- أما لماذا لانستخدم QT , فالسبب هو أنها كبيرة الجحم .. بالمقارنة مع مكتبات مثل GLFW أو SDL , التي تحقق المطلوب .

لكن ميزة QT هي أنه يمكنك تطوير برامج .. كبرامج الاوتوكاد ( الرسم الهندسي ) من خلال المزج بين QT و OpenGL .

لذلك الباب يبقى مفتوحاً لمكتبة QT .. ومقالك الجميل .. قمت باضافته الى قائمة الدروس ..

- للرسم في OpenGL نستخدم VBO و Vertex Array ( الموقع التالي يقدّم دروس أعتقد أنه يمكن أن تستخدمها بعد التعديل بالرغم من أنها مكتوبة على مواصفات GL 2.1 ) .

http://www.tojiart.com/OpenGL/

- رأيي المتواضع .. هو أن لا نندفع وراء OpenGL 3 ( كل شيء تغيّر ) .. ونحاول تعلّم OpenGL 2.1 .. نتعلّم VBO و Texture و GLSL .. لتكون كتمهيد للانتقال الى OpenGL 3 .

نقوم بذلك حتى تكثر الدروس والكتب وتنتشر المكتبة .

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#6

الله يجزاك خير على الرد و المعلومات

انا استخدم حاليا الإصدار 4.5.2 من المكتبة وحاليا يتوفر في الموقع الرسمي الإصدار 4.5.3 جالس أحمله

ولكن في النسخة الحالية يتوفر دعم ل openGL3.0 ممكن أحصل دعم ل openGL3.1 في الإصدار الأخير ل Qt  :D

عندما أختبر الدعم أجد أنه يعطيني الرقم 4223 هو مايوافق الإصدارات من 1.1 الى 3.0

وعندما أقوم بحذف الدرايفر يعطيني الرقم 1 أي الإصدار 1.1 فقط

صحيح هذه الا حيرتني مسألة ال context طيب ممكن هناك ماكرو يختبر نسختي الحالية قبل الترجمة فيحدد ال context ممكن :P

انا لا أعرف شيئ بالنسبة لل context حق openGL3.0 بل أخاف اتعلمه :lol:

هل يمكنك أن تعيد كتابة الـ Method الخاصة بتهيئة OpenGL .. بحيث تدعم الجيل الثالث ؟! هذا السؤال كبير عليا :wacko:

عموما راح أحاول أن أشتري الكتاب وأبدأ مباشرة مع openGL3.0 أو openGL3.1 حتى أشاركك في محركك الذري :D

بالنسبة للكود

ملف الترويسة

#ifndef GL3_H
#define GL3_H

#include <QtOpenGL>

class GL3 : public QGLWidget
{
	Q_OBJECT

public:
	GL3(QWidget *parent = 0);
	~GL3();
	protected:
	void paintGL ();
	void resizeGL(int width, int height);
};

#endif // GL3_H

ملف cpp

#include "gl3.h"

GL3::GL3(QWidget *parent)
	: QGLWidget(parent)
{
	this->showFullScreen();
}

 void GL3::paintGL ()
 {
	 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		glLoadIdentity();
		glColor3d(100,100,100);
		glRectd(0,0,.5,.5);
		glFlush();

}

 void GL3::resizeGL(int width, int height)
 {
	 glViewport(0,0,width,height);
	 glClearColor(0,0,0,250);
 }

GL3::~GL3()
{

}

ملف main.cpp

#include <QtGui/QApplication>
#include "gl3.h"

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);

	GL3 w;
	return a.exec();
}

وشكرا لك

تم تعديل هذه المشاركة بواسطة مصفوفة في 19 يوليو 2009 في 01:48

بسم الله الرحمن الرحيم

مدونة دوال

كيوتي العربي

#7

السلام عليكم ,

قمت باعادة تثبيت التحديث من انفيديا .. جربت برنامجك .. وجربت برنامج آخر باستخدام مكتبة GLFW ( نسخة خاصة .. قمت بتضمينها بالكامل مع المثال .. ).

الخلاصة أن نوع الاصدار لدي 3.1 .

post-42837-1249232827_thumb.jpg

قمت بتجربة برامج قديمة .. تم انشاء الـ Context بالطريقة القديمة .. ولكن مع ذلك تظهر رقم النسخة 3.1 .

لذلك .. الظاهر والله أعلم أن OpenGL تعيد لنا رقم آخر نسخة مدعومة من كرت شاشتك .. باستخدام هذا الكود :

	const GLubyte *s = glGetString(GL_VERSION);
	MessageBoxA(0,(char*)s,0,0);

فلا اعتبار هنا لطريقة انشاء Context .. سواء تعتمد على GL 2.1 أو GL3.0.. هذا ما لاحظته ولم أتأكد الى الان .

* اذا أنشأت الـ Context باستخدام الامتداد الجديد .. ستتمكن من استخدام مميزات OpenGL 3 .. لكن بنفس الوقت يمكنك استخدام المميزات القديمة .. انفيديا تقول .. أنها لاتريد ايقاف دعم الاصدارات القديمة .

على العموم .. مكتبة GLFW 2.7 .. ( لم تصدر رسميا حتى الان ) .. دعمت OpenGL 3 .. وهذا مثال :

#pragma comment(lib,"glfw27.lib")
#pragma comment(lib,"opengl32.lib")
#include "glfw.h"
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
	int major, minor, revision;

	int * ii= NULL;
	delete ii;
	if (!glfwInit())
		exit(1);

	// use OpenGL 3
	glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
	glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 0);
	glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // or skip this

	if (!glfwOpenWindow(400,400, 8, 8, 8, 0, 0, 0, GLFW_WINDOW))
		exit(1);

	glfwGetVersion(&major, &minor, &revision);

	printf("GLFW header version: %u.%u.%u\n", GLFW_VERSION_MAJOR, GLFW_VERSION_MINOR, GLFW_VERSION_REVISION);	
	printf("GLFW library version: %u.%u.%u\n", major, minor, revision);	

	if (major != GLFW_VERSION_MAJOR ||
		minor != GLFW_VERSION_MINOR ||
		revision != GLFW_VERSION_REVISION)
		printf("*** WARNING: GLFW version mismatch! ***\n");

	printf("OpenGL context version: %s\n", glGetString(GL_VERSION));	
	printf("OpenGL context renderer: %s\n", glGetString(GL_RENDERER));	
	printf("OpenGL context vendor: %s\n", glGetString(GL_VENDOR));	
	//printf("OpenGL context extensions: %s\n", glGetString(GL_EXTENSIONS));	

	bool running = true;
	while(running)
	{
		glClear(GL_COLOR_BUFFER_BIT);

		glfwSwapBuffers();
		running = !glfwGetKey(GLFW_KEY_ESC)  || glfwGetKey(GLFW_OPENED);

	}
	exit(0);
}

المثال قابل للترجمة من المرفقات .. مباشرة

OpenGL_3.zip

تم تعديل هذه المشاركة بواسطة الشمري في 2 أغسطس 2009 في 20:19

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

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