Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2010, 12:54   #1
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
Вопрос OpenGL & DescribePixelFormat.

Вопрос: как выбрать наиболее «ускоренный формат пикселя»?
Я сделал простую выборку их всех возможных форматов в цикле… и обрывал работу цикла на первом попавшемся формате отвечающего заданным требованиям.
Код…
Код:
int CountOfPF = DescribePixelFormat( hDC, 0, 0, NULL ); // Общее количество форматов пикселя
		for (int i=0; i < CountOfPF; i++) {
		
		DescribePixelFormat( hDC, i, sizeof(pfd), &pfd );
		
		if ((pfd.cColorBits = 32) &&
			(pfd.cDepthBits > 0) &&
			(pfd.cStencilBits > 0) &&
			(pfd.iPixelType == PFD_TYPE_RGBA) &&
			((pfd.dwFlags & PFD_SWAP_COPY) == PFD_SWAP_COPY) &&
			((pfd.dwFlags & PFD_DRAW_TO_WINDOW) == PFD_DRAW_TO_WINDOW) &&
			((pfd.dwFlags & PFD_DOUBLEBUFFER) == PFD_DOUBLEBUFFER) &&
			((pfd.dwFlags & PFD_SUPPORT_OPENGL) == PFD_SUPPORT_OPENGL) &&
			!((pfd.dwFlags & PFD_GENERIC_FORMAT) == PFD_GENERIC_FORMAT) && 
			!((pfd.dwFlags & PFD_GENERIC_ACCELERATED) == PFD_GENERIC_ACCELERATED))
		{
			break;
		}
		}
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Старый 03.09.2010, 13:28   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем его выбирать?(я имею в виду параметры, кроме битностей))
параметры ставьте нужные(поддержку ГЛ, ускорение аппаратное, прорисовку в окно)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.09.2010, 14:54   #3
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

Как зачем?) что бы = max fps)) ...
Цитата:
выбрать наиболее «ускоренный формат пикселя»
Я полагаю формат выбранного пикселя не последнее дело в этом вопросе))

Кстати заметил, хотя может у меня создалось обманчивое ощущение, что PFD_SWAP_COPY несколько быстрее, нежели PFD_SWAP_EXCHANGE.

Бечмарк c пустой сценой… xD
PFD_SWAP_COPY – 2370 fps
PFD_SWAP_EXCHANGE – 2330fps

Они за что отвечают? Я так понял один за копирование, а другой за обмен BackBuffer’а?
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Старый 03.09.2010, 15:10   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
With the glAddSwapHintRectWIN extension function, two new flags are included for the PIXELFORMATDESCRIPTOR pixel format structure.
PFD_SWAP_COPY Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the content of the back buffer to be copied to the front buffer. The content of the back buffer is not affected by the swap. PFD_SWAP_COPY is a hint only and might not be provided by a driver.
PFD_SWAP_EXCHANGE Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the exchange of the back buffer's content with the front buffer's content. Following the swap, the back buffer's content contains the front buffer's content before the swap. PFD_SWAP_EXCHANGE is a hint only and might not be provided by a driver.
что обычно нужно, это PFD_DRAW_TO_WINDOW+PFD_DOUBLEBUFFER +PFD_SUPPORT_OPENGL+PFD_GENERIC_ACC ELERATED их и ставьте, зачем играться с ними если они вам и нужны?
максимум можно поигратся с форматом пикселя в памяти.(RGBA обычно шустрее)
если он не поддерживается, то ставим RGB. что еще надо-то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.09.2010, 17:31   #5
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

Спасибо, Пепел Феникса.

По играться же я решил исключительно ради интереса, а в друг бы обнаружилось что-то «незаурядное» xD, но похоже ни чего интересного и правильнее будет делать ChoosePixelFormat\SetPixelFormat с заданными параметрами.


Цитата:
The glAddSwapHintRectWIN function enables your application to speed up animation by reducing the amount of repainting between frames. With glAddSwapHintRectWIN you specify a set of rectangular areas that you want copied when you call the SwapBuffers function. When no rectangles are specified with glAddSwapHintRectWIN before calling SwapBuffers, the entire frame buffer is swapped. Using glAddSwapHintRectWIN to copy only parts of the buffer that changed can increase the performance of SwapBuffers significantly, especially when SwapBuffers is implemented in software. …
А glAddSwapHintRectWIN() насколько я понял для копирования частей изображения, т.е. она в большей степени предназначена для CAD’ов «идругихмногооконностей» и для приложений, где идет прорисовка во все окно она не актуальна.
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Старый 03.09.2010, 22:33   #6
.pixel
c++, dx/ogl
Форумчанин
 
Аватар для .pixel
 
Регистрация: 10.11.2008
Сообщений: 131
По умолчанию

Наткнулся на 46й урок NeHe.
Нашел там еще одну так сказать «игрушку» по данной теме - wglChoosePixelFormatARB

wgl_pixel_format

Небольшая выдержка из описания
Цитата:
…Additionally this interface allows pixel formats to be supported
which have attributes that cannot be represented using the standard
pixel format functions, i.e. DescribePixelFormat,
DescribeLayerPlane, ChoosePixelFormat, SetPixelFormat, and
GetPixelFormat.

Оо Мне кажется или там речь и правда идет о каких-то форматах Pixel’ей кои незримы обычным смертным?))
“Batch, Batch, Batch:” What Does It Really Mean?
I am a donut! Ask not how many tris/batch, but
rather how many batches/frame!
.pixel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Builder & OpenGL elpilasgsm C++ Builder 7 02.11.2009 09:26
TForm & TImage & PNG & Прозрачность delphi_beginner Общие вопросы Delphi 7 19.09.2009 08:46
Просто не понимаю б чём проблема!!!!!!!(char* && index) artush1984 Общие вопросы C/C++ 12 30.05.2009 03:30
Распределенные вычисления.Turbo Delphi & OpenGl Scabby Фриланс 1 12.05.2009 19:37
Проблема с MVC++ 2005 && 2008 на висте NetGod Софт 1 09.08.2008 17:14