ورود

View Full Version : گفتگو: opengl - چنتا سوال در مورد پشتیبانی سخت افزاری



1485159
دوشنبه 08 آذر 1389, 20:11 عصر
سلام
اول از همه میخوام یک تاپیک قدیمی که تقریبا همه شاید اونو خوندن رو معرفی کنم و بعدش از پویا ی عزیز تشکر کنم که توی اون تاپیک واقعا توضیحات خوبی داد.
تاپیک:
http://barnamenevis.org/showthread.php?202755-%D8%B4%DB%8C%D8%AF%D8%B1-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F&highlight=
ممنون پویا.

ماجرا از زمانی شروع شد که من چند روز پیش ویندوزم رو عوض کردم و قبل از نصب کارت گرافیک گفتم برم و انجینم(اگه بشه بهش گفت انجین) رو امتحان کنم. چشمتون روز بد نبینه:ناراحت: fps شده بود 7 و 8 و ... اولش گفتم شاید چون کارت گرافیک رو نصب نکردم به خاطر اونه! که به همین خاطر هم بود ولی وقتی همتای دایرکت ایکسی رو امتحان کردم fps بالای 300 بود و به خوبی کار میرد. بعدش گفتم شاید مشکل از برنامه نویسی منه ولی وقتی همتای opengl یه یک برنامه دیگه رو اجرا کردم دیدم نه اون هم مثل انجین بنده سکته زده.
بنابراین بر آن شدم تا یک بار دیگر خودم رو تفهیم کنم پس رفتم و اون تاپیکی رو که معرفی کردم رو یک بار دیگر هم خوندم و درک من از اون تاپیک این بود:

ویندوز به طور پیشفرض از نسخه 1.2 پشتیبانی میکنه ولی این نسخه جواب گوی همه ی نیاز ها نیست. و همچنین با نصب کارت گرافیک این نسخه حذف و یه نسخه ای که کارت گرافیک پشتیبانی میکنه نصب میشه.
و همیچنین با استفاده از نسخه پیشفرض نمیشه با شیدر کار کرد. و اگه با نسخه ای از opengl برنامه رو کامپایل کنیم یوزر باید حداقل اون ورژن رو داشته باشه. در غیر اینصورت برنامه کار نخواهد کرد.

حالا سوالات من این ها هستند:
1- ممکنه با نصب کارت گرافیک نسخه opengl قدیمی تر بشه؟ البته فکر کنم که بله امکان پذیر باشه، ولی سوال اینجاست که آیا هنوز هم همچین کارت گرافیک هایی کاربرد دارن؟
2- من الان با سیستم خودم برنامه رو کامپایل کردم اگه کارت گرافیک سیستم مقصد از کارت گرافیک من مقداری قدیمی تر باشه دیگه برنامه روی سیستم یوز کار نخواهد کرد. درسته؟ آیا این یک ضعف بحساب نمیاد؟ برایه رفع این مشکل چه باید کرد.
3- الان اکثر کارت های گرافیک از چه نسخه ای استفاده میکنن؟
4- آیا این موارد در مورد دایرکت هم کاملا صادقه؟
5- فرض کنید مورد سوال 2 اتفاق افتاد. در این صورت برنامه با یک error دلخراش بسته میشه؟ یا نه فقط fps کم میشه و چیزی رسم نمیشه؟

فعلا سوال دیگه ای به ذهنم نمیرسه.:لبخند:
ممنون.

pswin.pooya
دوشنبه 08 آذر 1389, 22:03 عصر
1- ممکنه با نصب کارت گرافیک نسخه opengl قدیمی تر بشه؟ البته فکر کنم که بله امکان پذیر باشه، ولی سوال اینجاست که آیا هنوز هم همچین کارت گرافیک هایی کاربرد دارن؟

فکر نکنم همچین حالتی پیش بیاد اما شما میتونید مطمئن باشید که حداقل 1.2 ساپورت میشه. میشه گفت الان اکثر کارتهای گرافیکی یوزرها مخصوصا کسایی که گیم بازی میکنن حداقل OpenGL 2.0 رو پشتیبانی میکنه. اما این مابین سیستمهایی قدیمی هستن که از OpenGL 2.0 پشتیبانی نمی کنن. که اصولا گیمرها از این قاعده مستثنی هستند.


3- الان اکثر کارت های گرافیک از چه نسخه ای استفاده میکنن؟

الان اکثرا از نسخه 2 پشتیبانی میکنن

برای nvidia:
* بعضی از مدلهای سری چهار و بعضی از مدلهای سری پنج حداقل از OpenGL 1.5 پشتیبانی میکنن.
* سری 5 به بعد تا سری هشت Geforce حداقل از OpenGL 2.0 پشتیبانی میکنن.
* سری هشت و نه Geforce تا GPUهای فرمی حداقل از OpenGL 2.0 و حداکثر از OpenGL 3.3 پشتیبانی میکنن.
* سری 400 و GPUهای فرمی حداقل از OpenGL 2.0 و حداکثر تا اینجا از OpenGL 4.1 پشتیبانی میکنن.

تمام موارد ذکر شده از ویرایشهای OpenGL قبل از خودشون پشتیبانی میکنن.

تا حالا هیچ کدوم از بازیها به جزء چند موردی که از tessellation استفاده کردن بیشتر از OpenGL 2.1 لازم نداشتن. این ورژن تمام قابلیتهای OpenGL 3.0 رو به صورت الحاقی پشتیبانی میکنه و فقط OpenGL 3.0 یک مقدار برای گرافیک مدرن بهینه تر شده و توابع اضافی حذف شدن. توی این ویرایش تا شیدر مدل 4 پشتیبانی میشه اما برای شیدر مدل 5 نیاز به OpenGL 4.0 هست. دقیقا یادم نیست کدوم ویرایش ولی فکر کنم 3.1 یا 3.2 حداقل از شیدر مدل چهار پشتیبانی میکنه. یعنی برای اینکه این ویرایش کار کنه باید حداقل شیدر مدل چهار باشه.


4- آیا این موارد در مورد دایرکت هم کاملا صادقه؟
پشتیبانی سخت افزاری از مواردی که داخل کدینگ استفاده شده هم برای دایرکت و هم برای OpenGL لازمه


5- فرض کنید مورد سوال 2 اتفاق افتاد. در این صورت برنامه با یک error دلخراش بسته میشه؟ یا نه فقط fps کم میشه و چیزی رسم نمیشه؟
اصولا باید با همون خطای دلخراش بسته بشه. اما در صورتی که درایور کارت گرافیک نصب نشه. بسیاری از موارد OpenGL 1.2 سمت پردازنده حساب میشه که سرعت رو به شدت پایین میاره. من خودم یک نمونه برنامه تحت لینوکس داشتم که حتی با رزولیشن پایین هم 10 تا fps نمیداد بعد از نصب درایور یک دفعه fps شده 700


شما اگر بتونین درست از امکانات OpenGL 1.5 استفاده بکنین میتونین یه بازی مثل Doom 3 بسازین. OpenGL 2 هم حداقل اطمینان میده که از شیدر مدل 2 پشتیبانی میشه. شما بهتره که درایور جدید رو از سایت سازنده کارت گرافیکیتون دریافت کنید.

1485159
دوشنبه 08 آذر 1389, 22:18 عصر
اما این مابین سیستمهایی قدیمی هستن که از OpenGL 2.0 پشتیبانی نمی کنن.
در این حالت مشکل از منه برنامه نویسه یا از یوزر؟

الان اکثرا از نسخه 2 پشتیبانی میکنن
مثلا سیستمی که 5 سال پیش جمع آوری شده هم پشتیبانی میکنه؟

* بعضی از مدلهای سری چهار و بعضی از مدلهای سری پنج حداقل از OpenGL 1.5 پشتیبانی میکنن.
* سری 5 به بعد تا سری هشت Geforce حداقل از OpenGL 2.0 پشتیبانی میکنن.
* سری هشت و نه Geforce تا GPUهای فرمی حداقل از OpenGL 2.0 و حداکثر از OpenGL 3.3 پشتیبانی میکنن.
این مدل ها چند ساله عرضه شدن؟

رو به صورت الحاقی پشتیبانی میکنه
یعنی چی بصورت الحاقی؟

شما اگر بتونین درست از امکانات OpenGL 1.5 استفاده بکنین میتونین یه بازی مثل Doom 3 بسازین.
خوب من الان فرضا نسخه opengl ام هست 2 چطوری میتونم از 1.5 استفاده کنم؟
ممنون.

pswin.pooya
دوشنبه 08 آذر 1389, 23:32 عصر
خوب من الان فرضا نسخه opengl ام هست 2 چطوری میتونم از 1.5 استفاده کنم؟
کامپیوترت رو خاموش کنی بهتره. بیخیال ورژن بشو بچسب یه کتاب OpenGL رو از اول بخون. من 100 بار گفتم که اگر از دستورها و امکانات هر ویرایشی استفاده کنی وابسته به اون میشی. مثلا اگر از شیدر GLSL استفاده کنی باید حداقل OpenGL 2 داشته باشی اما اگر از ARB استفاده کنی میتونی از 1.5 به بعد استفاده کنی. بیشتر از این نمی تونم توضیح بدم بهتره بری داکیومنتها و یا RedBook رو بخونی

1485159
سه شنبه 09 آذر 1389, 12:56 عصر
من 100 بار گفتم که اگر از دستورها و امکانات هر ویرایشی استفاده کنی وابسته به اون میشی.
آهان. من فکر میکردم که اگه با ورژن 2 کامپایل بشه باید همون ورژن وجود داشته باشه!
پس اگه من حتی با ورژن 4 هم کامپایل کنم ولی فقط از امکانات ورژن 1.5 استفاده کنم، یوزر باید ورژن 1.5 رو حداقل داشته باشه؟
خواهش میکنم این یکی رو هم جواب بده.
ممنون.