<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=1632826</guid>
        <pubDate>Thu, 12 Jul 2007 08:18:16 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=1632826</link>
        <description><![CDATA[barazuk: <span class='tag-size' data-value='14' style='font-size:14pt;'><strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue">Библиотеки для работы с растровыми изображенниями</span></strong></span><br>
<br>
Безусловно, нижеописанными список не ограничивается. Просто лично я имел дело именно с ними, и поэтому могу указать на известные мне возможности/достоинства/недостатки. <br>
<hr><strong class='tag-b'>Просьба к желающим возопить &quot;а вот библиотека ХХХ круче&#33;&quot; <br>
<em class='tag-i'>Подробные</em> описания (а не сообщения типа &quot;а вот есть еще суперлиба *** - всем рекомендую&#33;&quot;) более других библиотек - только приветствуется - я же не могу скачать и освоить ВСЕ имеющиеся библиотеки ;)</strong><hr><br>
<br>
1. <a class='tag-url' href='http://sourceforge.net/projects/freeimage' target='_blank'><strong class='tag-b'>FreeImage</strong></a><br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>is a library project for developers who would like to support popular graphics image formats (PNG, JPEG, TIFF, BMP and others). Some highlights are: extremely simple in use, not limited to the local PC (unique FreeImageIO) and Plugin driven&#33;</div></div><br>
<br>
<strong class='tag-b'>Лицензия:</strong> GNU GENERAL PUBLIC LICENSE (Version 2, June 1991)<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> открытые исходные коды<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> поддержка плугинов <br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> открытое АПИ для плугинов<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> поддержка &quot;научных&quot; и специальных изображений с количеством бит на пиксель, большим 8 (32-bit IEEE floating point, 64-bit IEEE floating point, 48 [3 x 16-bit], 64 [4 x 16-bit], 96 [3 x 32-bit IEEE floating point], 128 бит на пиксель [4 x 32-bit IEEE floating point], &quot;комплексные&quot; изображения [2 x 64-bit IEEE floating point]); функции для работы с каналами - FreeImage_GetChannel, FreeImage_SetChannel, FreeImage_GetComplexChannel, FreeImage_SetComplexChannel.<br>
 <br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> работа с EXIF, IPTC <br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> имеются интерфейсы для сжатия и подсчета CRC32 (FreeImage_ZLibCompress, FreeImage_ZLibUncompress, FreeImage_ZLibGZip, FreeImage_ZLibCRC32, FreeImage_ZlibGUnzip)<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> открывает/сохраняет файлы с Юникодными именами<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> умеет работать с &quot;файлами&quot; прямо в памяти (FreeImage_LoadFromMemory, FreeImage_SaveToMemory), что позволяет создавать собственные контейнеры и работать с архивами &quot;на лету&quot;<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> умеет загружать картинки из &quot;хэндлов&quot; - полностью задаваемые пользователем процедуры открытия/чтения/записи/закрытия. Позволяет реализовать абсолютно любые типц контейнеров/источников данных/что еще придет в голову (FreeImage_LoadFromHandle, FreeImage_SaveToHandle). <br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> умеет определять тип картинки по сигнатуре (группа функций FreeImage_GetFileType*)<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> не умеет получать информацию о картинке без ее открытия<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> работа с многостраничными изображениями (лично не проверял)<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> целых 6 фильтров для ресамплинга (Box, Bilinear, B-Spline, Bicubic, Catmull-Rom, Lanczos)<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> есть реализация для Alpha Blend (FreeImage_Composite)<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> мощные функции для квантизации в 8 бит - на основе optimized octree и нейронных сетей (FreeImage_ColorQuantize, FreeImage_ColorQuantizeEx). Последняя функция может квантизовать в произвольное количество цветов + можно передать уже сформированную палитру. Удобно для квантизации в &quot;Web-Safe&quot; цвета.<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> умеет конвертировать в 16 бит (R5G5B5, R5G6B5).<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> есть &quot;Tone mapping&quot; - сжатие динамического диапазона  изображений 48/96 (соотвественно, 16 либо 32 бита на канал), для отображения на 24-битных устройствах<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> есть несколько функций для цветокоррекции - FreeImage_AdjustCurve, FreeImage_AdjustGamma,  FreeImage_AdjustBrightness, FreeImage_AdjustContrast, FreeImage_Invert, FreeImage_GetHistogram.<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> нет полутоновых алгоритмов для приведения к черно-белому изображению (HalfTone 45 dithering, HalfTone 90 dithering, Pattern dithering, Floyd-Steinberg dithering, Burkes, Stucki, и [виноват, не помню уже как это называется - передача яркости через размер точек - &quot;клякс&quot;, как в газетах]).<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> нет никаких функций для &quot;рисования&quot; на битмапах<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> нет никаких &quot;продвинутых&quot; фильтров (General Convolution, Blur, Soften, Median, Average, Gaussian Blur, Sharpen, Emboss, Edge Detect и т.д.)<br>
<br>
2. <a class='tag-url' href='http://pagesperso-orange.fr/pierre.g/xnview/engfl.html' target='_blank'><strong class='tag-b'>GFL SDK (v2.80)</strong></a><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Is a powerful library for developers who would like to support graphics image formats easily. </div></div><br>
<br>
<strong class='tag-b'>Лицензия:</strong> Freeware for private non-commercial or educational use (including non-profit organization)<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> закрытые исходные коды<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> поддержка плугинов <br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> закрытое АПИ для плугинов<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> набор функций рисования на битмапах (простенько - точка, линия, полилайн, полигон, круг); вывод текста любым шрифтом на картинку (Юникод не поддерживается - только текущая кодовая страница АНСИ); кроме реализованных разработчиками фильтров, имеется возможность создания собственных филтров на основе convolution matrix. <br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> Юникод при выводе текста не поддерживается - только текущая кодовая страница АНСИ<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> многозадачность <br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> работа с EXIF, IPTC <br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> намного больше (более 100) поддерживаемых форматов (в т.ч. через плугины - JBIG, JPEG-2000 и FlashPix), для меня особенно радостна поддержка RAW-формата моего цифровичка (Canon RAW, CRW).<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> нет поддрежки Юникода в именах файлов (приходится &quot;обходить&quot; через хэндлы или чтение/сохранение из памяти)<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> умеет работать с &quot;файлами&quot; прямо в памяти (gflLoadBitmapFromMemory, gflSaveBitmapIntoMemory), что позволяет создавать собственные контейнеры и работать с архивами &quot;на лету&quot;<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> умеет загружать картинки из &quot;хэндлов&quot; - полностью реализуемые пользователем процедуры открытия/чтения/записи/закрытия. Позволяет реализовать абсолютно любые типы контейнеров/источников данных/что еще придет в голову (gflLoadBitmapFromHandle, gflSaveBitmapIntoHandle) - например, реализовать шифрацию на лету, собственный контейнер или ещё что :). <br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> умеет получать информацию о картинке без ее открытия<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> умеет извлекать или производить thumbnailы заказанного размера<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> документация местами просто отвратная&#33; Например (версия 2.70), для всех фильтров, кроме gflConvolve, в мане написано: &quot;Applies a filter on a picture. To do.&quot; Очень информативно&#33; &gt;:( &quot;Рабочий&quot; диапазон параметров изучается только методом научного тыка. Аналогично сохранение картинок - разобраться, к каким форматам относятся какие установки GFL_SAVE_PARAMS - только методом проб и ошибок.<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> &#33; некоторые заявленные в документации функции на самом деле либо не делают ничего, либо делают не совсем то, что заявлено (<span class="tag-color tag-color-named" data-value="red" style="color: red">&#33;</span> проверялось на версии 2.40, в настоящее время, возможно, исправлено). А именно: <br>
* не удалось создать анимированную жифку<br>
* не все алгоритмы для уменьшния количества цветов реально работают<br>
* альфа-наложение заставить работать не удалось<br>
* в некоторых &quot;расширенных&quot; функциях &quot;рабочий&quot; диапазон параметров у документации не указан<br>
* еще несколько групп нерабочих [или настолько ужасно документированных, что непонятно, как их правильно использовать] функций <br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> работа с изображениями 16 бит на цвет (не проверял)<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> работа с многостраничными изображениями (чтение - на 5, анимированную жифку создать не удалось)<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> всего два фильтра для ресамплинга (Box и Bilinear)<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> слабенькие функции для квантизации в 8 бит - причем многие выдают одинаковый результат. Не реализован даже простой Error Diffusion<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> заявлены несколько алгоритмов для квантизации в черно-белые полутоновые изображения (не проверял): <br>
GFL_MODE_NO_DITHER No dithering <br>
GFL_MODE_ADAPTIVE Adaptive without dithering <br>
GFL_MODE_PATTERN_DITHER Pattern dithering <br>
GFL_MODE_HALTONE45_DITHER HalfTone 45 dithering <br>
GFL_MODE_HALTONE90_DITHER HalfTone 90 dithering <br>
GFL_MODE_FLOYD_STEINBERG Floyd-Steinberg dithering<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="green" style="color: green">+</span></strong> до чёрта разных фильтров и функций для цветокоррекции: <br>
gflNegative, gflBrightness, gflContrast, gflGamma, gflLogCorrection, gflNormalize, gflEqualize, gflEqualizeOnLuminance, gflBalance, gflAdjust, gflAdjustHLS, gflAutomaticContrast, gflAutomaticLevels, gflSwapColors; <br>
gflAverage, gflSoften, gflBlur, gflGaussianBlur, gflMaximum, gflMinimum, gflMedianBox, gflMedianCross, gflSharpen, gflEnhanceDetail, gflEnhanceFocus, gflFocusRestoration, gflEdgeDetectLight, gflEdgeDetectMedium, gflEdgeDetectHeavy, gflEmboss, gflEmbossMore, gflSepia, gflSepiaEx, gflReduceNoise, gflDropShadow, gflConvolve.<br>
<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">-</span></strong> поддержка просто никакая :)<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Сообщения были разделены в тему &quot;<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=265596' target='_blank'>перерисовка экрана</a>&quot;</span></span>]]></description>
        <author>barazuk</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=559165</guid>
        <pubDate>Tue, 28 Dec 2004 17:33:17 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=559165</link>
        <description><![CDATA[barazuk: <span class='tag-size' data-value='14' style='font-size:14pt;'><span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>Ссылки по теме</strong></span></span><br>
<hr><br>
<br>
<strong class='tag-b'>Официальный сайт OpenGL:</strong> документация, спецификации, статьи, доп. библиотеки, примеры... <br>
http://www.opengl.org/<br>
<br>
<strong class='tag-b'>Империя Зла ;)</strong><br>
http://msdn.microsoft.com/<br>
<br>
<hr><br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>FAQ&#39;s (ЧАВО) - от дружественных и враждебных ресурсов :)</strong></span><br>
<br>
<strong class='tag-b'>SuperVGA/VESA programmer&#39;s notes</strong><br>
http://www.faqs.org/faqs/pc-hardware-faq/supervga-programming/<br>
<br>
<strong class='tag-b'>FAQ по программированию OpenGL</strong><br>
http://faqs.org.ru/progr/graph/opengl.htm<br>
<br>
<strong class='tag-b'>FAQ по 3D yскоpителям и каpтам на них</strong><br>
http://emanual.ru/get/3871/<br>
<br>
<strong class='tag-b'>FAQ по OpenGL (Elite Games)</strong><br>
http://www.elite-games.ru/conference/viewtopic.php?t=35356<br>
<br>
<strong class='tag-b'>DEMO.DESIGN FAQ</strong><br>
http://www.enlight.ru/demo/faq/<br>
<br>
<strong class='tag-b'>demo.design 3D programming FAQ</strong><br>
http://www.enlight.ru/faq3d/content.htm<br>
<br>
<hr><br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>Глоссарии</strong></span><br>
<br>
3D Глоссарий<br>
http://emanual.ru/get/3869/ <br>
<br>
<a class='tag-url' href='http://codecs.org.ua/voice.html' target='_blank'>Глосcарий и термины по цифровому видео, кодекам, сжатию, компрессии, носителям, цифровому вещанию и т.д.</a><br>
<br>
<a class='tag-url' href='http://compression.graphicon.ru/download/' target='_blank'>Ресурсы по сжатию: статьи и исходники</a><br>
<br>
<br>
<hr><br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>GameDev</strong></span><br>
FAQ для разработчиков игр (Программирование графики, DirectX Graphics (Direct3D), OpenGL, MAX SDK, Графическое оформление) <br>
<br>
На русском языке:<br>
<a class='tag-url' href='http://www.gamedev.ru/faq/' target='_blank'><strong class='tag-b'>http://www.gamedev.ru/faq/</strong></a><br>
<br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?sect=3' target='_blank'><strong class='tag-b'>Графика</strong></a><br>
Графика &quot;вообще&quot;: порталы, кватернионы, удаление невидимых граней, фильтрация, векторные/матричные преобразования, стенсельные тени, BSP деревья, Bump mapping, Статичный лайт-меп, частицы, ландшафты, Collision Detection (проверка столкновений), Инверсная кинематика, Скелетная анимация, Эффекты, Библиотеки... <br>
<br>
<strong class='tag-b'>DirectX</strong><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=10103' target='_blank'>Обзор DirectX9</a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=10102' target='_blank'>Direct3D: Первая программа под DirectX9</a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=10105' target='_blank'>Урок 1: Создание D3D Устройства</a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=10109' target='_blank'>Программирование шейдеров на HLSL</a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=10100' target='_blank'>Вершинные шейдеры</a><br>
<br>
<strong class='tag-b'>OpenGL</strong><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=20003' target='_blank'>OpenGL: Основы</a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=20114' target='_blank'>Основы программирования OpenGL в Borland С++Builder и Delphi.</a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=20105' target='_blank'>Трансформации в OpenGL</a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=20121' target='_blank'>Построение теней в OpenGL при помощи теневых буферов</a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=20106' target='_blank'>Работа с расширениями OpenGL с использованием NVIDIA OpenGL SDK 5.1. (Часть 1) </a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=20002' target='_blank'>OpenGL: Extensions (Расширения) </a><br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?id=20104' target='_blank'>OpenGL pixel and vertex shaders</a><br>
<br>
&quot;Старший брат&quot; этого сайта на англицком:<br>
<a class='tag-url' href='http://www.GameDev.net/' target='_blank'><strong class='tag-b'>http://www.GameDev.net/</strong></a><br>
<br>
<img class='tag-img' src='http://forum.sources.ru/style_images/1/icon13.gif' alt='user posted image'><span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>Рекомендованное чтиво для начинающих изучать OpenGL&#33;&#33;&#33;</strong></span><br>
<a class='tag-url' href='http://nehe.gamedev.net/' target='_blank'>Примеры от Nehe</a><br>
<a class='tag-url' href='http://pmg.org.ru/nehe/index.html' target='_blank'>Примеры от NeHe на русском</a><br>
<br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>Для продолжающих изучать OpenGL</strong></span><br>
<a class='tag-url' href='http://steps3d.narod.ru/articles.html' target='_blank'>steps3d.narod.ru</a> - статьи о некоторых расширениях OpenGL, шейдерах и не только.<br>
<br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>OpenGL изнутри</strong></span><br>
<span class='tag-size' data-value='8' style='font-size:8pt;'>Всем, кому интересно как же именно работают функции OpenGL и сопутствующих библиотек (ex. GLU) и по каким формулам происходят рассчеты.</span><br>
<a class='tag-url' href='http://oss.sgi.com/projects/ogl-sample/' target='_blank'>OpenGL® Sample Implementation</a> от SGI -  реализация API версии 1.2.1.<br>
<a class='tag-url' href='http://mesa3d.org/' target='_blank'>Mesa</a> - современная open source реализация OpenGL API.<br>
<br>
<hr><br>
<span class="tag-color tag-color-named" data-value="blue" style="color: blue"><strong class='tag-b'>DELPHI</strong></span><br>
<br>
DELPHI / FAQ / Графика<br>
http://e-dok.narod.ru/delphi/question1/graf/graf.html<br>
<br>
<a class='tag-url' href='http://www.gamedev.ru/articles/?sect=11' target='_blank'>DelphiX на GameDev.ru</a><br>
<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green">ФАКу расти&#33;</span> :)<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Сообщения были разделены в тему &quot;<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=184283' target='_blank'>Спам</a>&quot;</span></span><br>
<br>
<span class='tag-size' data-value='7' style='font-size:7pt;'>Сообщение отредактировано: <strong class='tag-b'>barazuk</strong> - 22.04.08, 00:06</span>]]></description>
        <author>barazuk</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=483571</guid>
        <pubDate>Thu, 14 Oct 2004 17:45:36 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=483571</link>
        <description><![CDATA[dimedrol: OpenGL<br>
<strong class='tag-b'>Вопрос:</strong> Почти у каждого человека, который начинает программировать на OpenGL возникает два вопроса как сделать окно без рамки и поверх других окон(как в играх) и как поменять разрешение экрана<br>
<br>
<strong class='tag-b'>Ответ</strong><br>
<br>
Вот так создает окно без рамки<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">hWnd = CreateWindowEx(WS_EX_TOPMOST,...,..., WS_POPUP | WS_VISIBLE,NULL,NULL, ..., ..., NULL, NULL, hInstance, NULL);</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
А вот функция для смены разрешения:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">BOOL &nbsp; &nbsp;changeResolution(unsigned int iWidth, unsigned int iHeight)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Change the resolution</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DEVMODE dmScreenSettings;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Zero ram to store settings</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;memset(&amp;dmScreenSettings, 0, sizeof(DEVMODE));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Size of the devmode structure</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dmScreenSettings.dmSize &nbsp; &nbsp; &nbsp; &nbsp; = sizeof(DEVMODE);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Pixel mode</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dmScreenSettings.dmFields &nbsp; &nbsp; &nbsp; = DM_PELSWIDTH | DM_PELSHEIGHT; </div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dmScreenSettings.dmPelsWidth &nbsp; &nbsp;= iWidth; &nbsp; // Screen width</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dmScreenSettings.dmPelsHeight &nbsp; = iHeight; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ChangeDisplaySettings(&amp;dmScreenSettings, CDS_FULLSCREEN) </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;!= DISP_CHANGE_SUCCESSFUL)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return FALSE;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return TRUE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div></ol></div></div></div></div>Используется следующим образом:<br>
changeResolution(640, 480);<br>
А чтобы восстановить первоначальное разрешение:<br>
changeResolution(NULL, NULL);]]></description>
        <author>dimedrol</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=482041</guid>
        <pubDate>Wed, 13 Oct 2004 07:15:54 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=482041</link>
        <description><![CDATA[x0ras: <strong class='tag-b'>DirectGraphics</strong><br>
<br>
<strong class='tag-b'>Вопрос:</strong> Когда я рисую пустую сцену, fps = ~2500. Стоит отрисовать один треугольник, как fps падает до 1000. Почему такая большая разница?<br>
<br>
<strong class='tag-b'>Ответ:</strong> <br>
<strong class='tag-b'>1.</strong> Многое зависит от размера треугольлника: чем больше треугольник, тем больше времени тратится на его растеризацию.<br>
<strong class='tag-b'>2.</strong> Падение с 2500 до 1000 не так страшно, как падение, например, со 100 до 40. К тому же падение fps обычно происходит нелинейно.<br>
<strong class='tag-b'>3.</strong> Измерять производительность приложение fps не очень хорошо. Лучше подходит вариант ft (Frame Time). Время рендера одного кадра лучше покажет производительность.]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481601</guid>
        <pubDate>Tue, 12 Oct 2004 13:31:34 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481601</link>
        <description><![CDATA[x0ras: <strong class='tag-b'>DirectGraphics</strong><br>
<br>
<strong class='tag-b'>Вопрос:</strong> Я использую только функции D3DX, вдруг Microsoft уберет или изменит некоторые функции в этой библиотеке, ведь функция - это не COM-интерфейс?<br>
<br>
<strong class='tag-b'>Ответ:</strong> В виде dll существует только Debug версия D3D Extension Library. Release версия, является статической библиотекой, функции которой присоединяются к приложению и ни от каких dll не зависят.]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481588</guid>
        <pubDate>Tue, 12 Oct 2004 13:25:00 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481588</link>
        <description><![CDATA[x0ras: <strong class='tag-b'>DirectGraphics</strong><br>
<br>
<strong class='tag-b'>Вопрос:</strong> Я отлаживаю приложение, но чтобы я ни делал, но я не получаю сообщения от D3DX Library. В чем может быть дело?<br>
<br>
<strong class='tag-b'>Ответ: </strong> Для отладки приложения лучше использовать Debug версию D3DX. Для этого к проекту нужно прилинковывать d3dx9d.lib. В конечном продукте лучше использовать d3dx9.lib.]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481580</guid>
        <pubDate>Tue, 12 Oct 2004 13:20:45 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481580</link>
        <description><![CDATA[x0ras: <strong class='tag-b'>DirectGraphics</strong><br>
<br>
<strong class='tag-b'>Вопрос:</strong> Что такое D3DX? Как это использовать и стоит ли?<br>
<br>
<strong class='tag-b'>Ответ:</strong> Direct3D Extension - это дополнительная библиотека, предназначенная для облегчения программирования. В этой библиотеке содержатся математические функции (работа с матрицами, векторами, кватернионами и т.д.), функции работы с текстурами и множество др. полезных интерфейсов.<br>
Для небольших проектов это отличная библиотека, которая облегчит жизнь программистам.]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481568</guid>
        <pubDate>Tue, 12 Oct 2004 13:10:50 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481568</link>
        <description><![CDATA[x0ras: <strong class='tag-b'>DirectGraphics</strong><br>
<br>
<strong class='tag-b'>Вопрос:</strong> После установки DirectX SDK в панели управления DX, появляется меню выбора версии Direct3D: Debug или Release (Retail) Run Times. Какая разница и что использовать?<br>
<br>
<strong class='tag-b'>Ответ:</strong> Debug RT отличается от Release RT следующим:<br>
<strong class='tag-b'>1.</strong> Производится проверка передаваемых параметров.<br>
<strong class='tag-b'>2.</strong> Выводит отладочную информацию (не та которая содержится в exe-файле приложения, а сообщения выводимые окно MSVS).<br>
<strong class='tag-b'>3.</strong> И, конечно же, Debug RT медленнее Release RT.]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481214</guid>
        <pubDate>Tue, 12 Oct 2004 08:12:32 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481214</link>
        <description><![CDATA[x0ras: <strong class='tag-b'>DirectGraphics</strong><br>
<br>
<strong class='tag-b'>Вопрос:</strong> Когда я устанавливаю software vertex processing, приложение работает быстрее, чем с hardware. Почему?<br>
<br>
<strong class='tag-b'>Ответ:</strong> Существует ошибочное мнение, что HVP должен работать быстрее SVP. Это не так. Частота CPU намного превышает частоту GPU, поэтому вершины обрабатываются быстрее. Аппаратная обработка вершин используется для разгрузки CPU.]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481192</guid>
        <pubDate>Tue, 12 Oct 2004 07:54:35 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=481192</link>
        <description><![CDATA[x0ras: <strong class='tag-b'>DirectGraphics</strong><br>
<br>
<strong class='tag-b'>Вопрос:</strong> В чем разница между HAL и REF устройствами Direct3D? Что использовать?<br>
<br>
<strong class='tag-b'>Ответ:</strong> HAL (Hardware Abstraction Layer) - это основной тип Direct3D устройства, который базируется на аппаратной поддержке функций. REF (REFerence rasterizer) - этот тип устроства не использует аппаратную поддержку и, как следствие, работает медленно. REF device специально предназначен для отладки и тестирования различных функций, которые не поддерживаются аппаратно. Например, для тестирования вершинных/пиксельных шейдеров, которые ваша видеокарта не поддерживает. Или для выявления глюков: если при переходе с HAL на REF глюк исчез, значит виноват драйвер видеокарты, если остался, значит ошибка в вашем приложении.<br>
В конечной реализации, конечно, нужно использовать HAL устройство.]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=480280</guid>
        <pubDate>Mon, 11 Oct 2004 07:51:46 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=480280</link>
        <description><![CDATA[x0ras: <strong class='tag-b'>OpenGL</strong><br>
<br>
<strong class='tag-b'>Вопрос:</strong> Я написал простейшее приложение, но оно работает очень медленно. В чем причина?<br>
<br>
<strong class='tag-b'>Ответ:</strong> Причин может несколько:<br>
<strong class='tag-b'>1.</strong> Установленный формат пикселя может не поддерживаться текущим драйвером видеокарты. Чтобы определить поддержку, нужно сделать следующее:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">// Это небольшая функция, которая определяет аппаратную поддержку</div><div class="code_line">&nbsp;</div><div class="code_line">#define EMULATION 0</div><div class="code_line">#define PART_ACCEL 1</div><div class="code_line">#define FULL_ACCEL 2</div><div class="code_line">&nbsp;</div><div class="code_line">int CheckHardwareSupport(HDC hdc)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; int PixelFormat = GetPixelFormat(hdc);</div><div class="code_line">&nbsp;&nbsp; PIXELFORMATDESCRIPTOR pfd;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; DescribePixelFormat(hdc,PixelFormat,sizeof(PIXELFORMATDESCRIPTOR),&amp;pfd);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; if ((pfd.dwFlags &amp; PFD_GENERIC_FORMAT) &amp;&amp; !(pfd.dwFlags &amp; PFD_GENERIC_ACCELERATED))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return EMULATION; // Программная эмуляция OpenGL.</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; else if ((pfd.dwFlags &amp; PFD_GENERIC_FORMAT) &amp;&amp; (pfd.dwFlags &amp; PFD_GENERIC_ACCELERATED))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return PART_ACCEL; // Аппартная поддержка только некоторой части функций ( MCD-драйвер ).</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; else if ( !(pfd.dwFlags &amp; PFD_GENERIC_FORMAT) &amp;&amp; !(pfd.dwFlags &amp; PFD_GENERIC_ACCELERATED))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return FULL_ACCEL; // Полная аппаратная поддержка ( ICD-драйвер ).</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>2.</strong> Могут использоваться расширения, которые эмулирует текущий драйвер видеокарты. Для решения этой проблемы, нужно скачать спецификацию видеокарт с сайта производителя. В спецификации обычно указаны какие расширения поддерживаются с какой версии драйверов, а какие эмулируются.<br>
<br>
<strong class='tag-b'>3.</strong> Может установлен старый драйвер и нужно всего лишь обновить его.]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=480241</guid>
        <pubDate>Mon, 11 Oct 2004 07:18:13 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=480241</link>
        <description><![CDATA[x0ras: <strong class='tag-b'>OpenGL</strong><br>
<br>
<strong class='tag-b'>Вопрос:</strong> У меня постоянный (ограниченный) FPS. В чем может быть дело?<br>
<br>
<strong class='tag-b'>Ответ:</strong> FPS может ограничивать вертикальная развертка монитора. В этом случае FPS не может превышать текущей частоты развертки монитора. Для того, чтобы FPS не ограничивался нужно отключить синхронизацию. Для этого в Windows предназанчены две функции: wglGetSwapIntervalEXT и wglSwapIntervalEXT.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">int wglGetSwapIntervalEXT(void) // Эта функция возвращает текущую развертку.</div><div class="code_line">BOOL wglSwapIntervalEXT(int interval) // Эта функция устанавливает развертку.</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>Дополнительно:</strong> Для использования этих функций, уже должен быть установлен контекст OpenGL (wglMakeCurrent). Имя расширения WGL_EXT_swap_control.]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=475690</guid>
        <pubDate>Tue, 05 Oct 2004 12:50:54 +0000</pubDate>
        <title>Сбор информации в FAQ</title>
        <link>https://forum.sources.ru/index.php?showtopic=68219&amp;view=findpost&amp;p=475690</link>
        <description><![CDATA[x0ras: Прошу писать сюда информацию в будущий FAQ.<br>Т.к. на некоторые вопросы ответы довольно объемные и воизбежании двойной работы, можно просто написать вопрос, а уже потом поправить сообщение (или мне в привать отослать).]]></description>
        <author>x0ras</author>
        <category>Программирование графики</category>
      </item>
	
      </channel>
      </rss>
	