C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Нетология

 27 - Характеристики вашего Акселератора / Open GL / Графика

Шаг 27 - Характеристики вашего Акселератора

У многих пользователей часто возникает вопрос: "Как определить возможности видео адаптера?" Какие расширения OpenGL ваш адаптер может реализовать аппаратно, а какие будут эмулированы програмно?

Сделать это очень просто. Возьмем наш старый добрый проект, уберем из него все излишки.

Мы ничего не будем рисовать, поэтому функция OnDraw(...) будет почти пустой. Чтобы не напрягаться с "правильным" выводом на экран все неоходимые данные мы выведем в файл.

Итак, после всех изменений функция OnDraw(...) будет выглядеть так:

void CExampleView::OnDraw(CDC* pDC)
{
	CRect clientRect;
	CFile cf;
	char ch[2] = {13, 10};	// это символ конца строки ;))

	CExampleDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here

	cf.Open("Property.txt", CFile::modeCreate | CFile::modeWrite);
 
	GetClientRect(&clientRect);
	glViewport(0, 0, clientRect.right, clientRect.bottom);

	glClearColor (1.0, 1.0, 1.0, 1.0);
	glClear (GL_COLOR_BUFFER_BIT);

	m_pVendor = glGetString(GL_VENDOR);
	m_pVersion = glGetString(GL_VERSION);
	m_pRenderer = glGetString(GL_RENDERER);
	m_pExtensions = glGetString(GL_EXTENSIONS);

	cf.Write("Производитель: ", strlen("Производитель: "));
	cf.Write(m_pVendor, strlen((const char*)m_pVendor));
	cf.Write(&ch,2);

	cf.Write("Версия: ", strlen("Версия: "));
	cf.Write(m_pVersion, strlen((const char*)m_pVersion));
	cf.Write(&ch,2);

	cf.Write("Рендер: ", strlen("Рендер: "));
	cf.Write(m_pRenderer, strlen((const char*)m_pRenderer));
	cf.Write(&ch,2);

	cf.Write("Расширения: ", strlen("Расширения: "));
	cf.Write(m_pExtensions, strlen((const char*)m_pExtensions));
	cf.Write(&ch,2);

	cf.Close();

	SwapBuffers(pDC->m_hDC);

	pDC->TextOut(10,10, "Данные о вашем видеоадаптере записаны в файл Property.txt");
}

С помощью функции glGetString(...) OpenGL позволяет получить 4 типа данных о железе: Производитель, Версия, Чипсет, Расширения. Все они выводятся в нашем приложении.

Кстати, обратите внимание, что после переключения буффера мы можем воспользоваться стандартными функциями вывода графики GDI, хотя ... это чисто академический случай. В обычном приложении такая халява не пройдет ;).

Шпаргалка

  1. Не надо делать ничего лишнего. Просто получите с помощью glGetString(...) все текстовые строки и выведите их куда-нибудь.

Информацию о том, что означает каждое расширение можно получить на http://opengl.rdc.ru/docs/dreviews/1999-02-15.phtml.


| |
Автор Kirill V. Ratkin.
[AD]





Letyshops [lifetime]