Page 2 of 5 FirstFirst 12345 LastLast
Results 11 to 20 of 46

Thread: Graphics OpenGL трёхмерное и прочее

  1. #11
    немиртингас Слоник Трурль's Avatar
    Join Date
    Dec 2006
    Location
    Minneapolis
    Posts
    5,053

    Default Re: Graphics OpenGL трёхмерное и прочее

    OpenGL правильности советов

    Выполните проверку ошибок часто. Звоните glGetError (), по крайней мере один раз каждый раз становится ареной внести определенные условия, ошибку заметили.
    Не рассчитывать на ошибку поведение OpenGL осуществление, - она может измениться в последующих версиях OpenGL. Например, OpenGL 1,1 игнорирует матричных операций ссылаться между glBegin () и glEnd () команд, но в будущем, возможно, не версия. Иначе говоря, OpenGL ошибка семантики между могут измениться в сторону повышения-совместимых изменений.
    Если нужно, чтобы свернуть все в геометрию одной плоскости, использование проецирования матрицы. Если modelview матрицы используется, OpenGL функции, которые действуют в глаза координат (например, освещения и применения определенных обрезание самолеты) могут потерпеть неудачу.
    Не делайте значительные изменения в одной матрицы. Например, не живой ротации постоянно призывая glRotate * () с дополнительными угол. Скорее, используйте glLoadIdentity () для инициализации данной матрицы для каждого кадра, а затем слово glRotate * () с желаемой полный угол для этого кадра.
    Рассчитывайте на несколько проходит через оказание данных для генерации пикселя же фрагменты, если только такое поведение гарантирует инвариантности правил, установленных для совместимых OpenGL реализации. (См. Приложение H подробности об инвариантности правил.) Противном случае, разные наборы фрагментов могут быть сгенерированы.
    Не ожидайте ошибок представлять отчетность в то время как отображать список в настоящее время определена. Команды в списке отображения порождают ошибки только тогда, когда список казнен.
    Место возле frustum плоскости, что и вдали от точки зрения, как можно оптимизировать функционирование глубина буфера.
    Звоните glFlush () в силу все предыдущие OpenGL команды должен быть казнен. Не рассчитывать на glGet * () или glIs * () для флеш делает поток. Запрос команды флеш как большая часть потока, как это требуется, чтобы вернуться в силе данных, но не гарантируют завершить все до оказания команд.
    Поверните dithering покинуть при оказании predithered изображений (например, когда glCopyPixels () вызывается).
    Используйте весь спектр накопления буфера. Например, если в накопительных четыре изображения, масштаб каждого на одну четверть, как это накоплен.
    Если точные двумерные rasterization это нужно, Вы должны тщательно определить как orthographic проекции и вершин примитивов, которые должны быть rasterized. Orthographic прогноз должен быть указан с целыми координатами, как показано в следующем примере:
    gluOrtho2D (0, ширину 0, высота), где ширина и высота размеров области просмотра. С учетом этого прогноза матрица, полигонов и вершин пиксел изображения позиций должна находиться в целое координаты rasterize предсказуемо. Например, glRecti (0, 0, 1, 1) надежно заполняет левого нижнего пиксела от просмотра, и glRasterPos2i (0, 0) надежно позиций unzoomed изображение в нижней левой части области просмотра. Точка вершин, линия вершин, и растровые позиции должны быть поставлены на половину-целое число мест, однако. Например, строка из (x1, 0,5) до (x2, 0,5), будут надежно оказанные вдоль нижней точек в области просмотра, а также обращено на точку (0,5, 0,5) будет достоверно заполнить же пиксела, как glRecti (0, 0, 1, 1).
    Оптимальный компромисс, который позволяет всем примитивов, который будет определен на целое число позиций, в то же время обеспечивая предсказуемый rasterization, заключается в том, чтобы перевести х и 0,375 в год, как это показано в следующий фрагмент кода. Такой перевод держит полигона и пикселя изображения краев спокойно вдали от центров пикселей, в то время перехода линии вершин достаточно близко к пиксельных центров.
    glViewport (0, 0, ширина, высота); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluOrtho2D (0, ширину 0, высота); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glTranslatef (0,375, 0,375, 0,0); / * Сделать все примитивы в целых позиции * /
    Избегайте использования отрицательные ж вершинных координат и негативные q текстуры координат. OpenGL, возможно, не такой клип с координатами правильно и может привести к тому, интерполяция ошибки при закраске примитивов определяется такими координатами.
    Не думайте, точность операций, основанных на данных типа параметров для OpenGL команд. Например, если вы используете glRotated (), вы не думайте, что геометрической обработки трубопровода работает с двойной точности с плавающей точкой. Не исключено, что параметры glRotated () преобразуются в различных типа данных перед обработкой.

    OpenGL производительность советы

    Используйте glColorMaterial (), когда только один материал собственности в настоящее время разнообразные быстро (на каждой вершины, например). Используйте glMaterial () для изменения нечасто, или когда более чем одного материала собственности в настоящее время разнообразные быстро.
    Используйте glLoadIdentity () для инициализации матрицы, а не погрузки свой собственный экземпляр идентичность матрицы.
    Использование матрицы конкретных вызовов, например, glRotate * (), glTranslate * (), и glScale * (), чем написание собственного вращения, перевод, или масштаб матриц и призывая glMultMatrix ().
    Использование запроса функций, когда ваше приложение требует только несколько значений состояния для своих расчетов. Если ваше приложение требует нескольких значений состояния из одной и той же группы атрибутов, используйте glPushAttrib () и glPopAttrib (), чтобы сохранить и восстановить их.
    Использование отображения списков включает потенциально дорогостоящие государственные изменения.
    Использование отображения списков включает оказание требует жестких объектов, которые будет обращено неоднократно.
    Использование текстур на объекты происходят текстуры данных. Место все glTexImage * () звонки (в том числе mipmaps) должна полностью указать текстуру и связанных glTexParameter * () звонки (которые определяют свойства текстуры) в текстуру объекта. Bind эту текстуру объекта для выбора текстуры.
    Если ситуация позволяет ей использовать гл TexSubImage * () для замены всех или части существующих текстуру изображения, а не более дорогостоящих операций удаления и создания нового облика всего.
    Если ваша реализация поддерживает OpenGL высокопроизводительных рабочих набор текстур резидентов, постараемся сделать все ваши текстуры резидентов, то есть сделать их вписываются в высокопроизводительных текстуры памяти. В случае необходимости уменьшения размеров или внутренний формат вашего разрешения текстур до тех пор, пока все они вписываются в памяти. Если такое снижение создает невыносимо нечеткой текстурированных объектов, можно привести некоторые текстуры с низким приоритетом, который будет, Когда начинается серьезная заварушка, оставьте их из рабочего набора.
    Используйте оценке, даже для простых поверхности tessellations к минимуму сетевой трафик в клиент-серверных сред.
    Представьте единицу длины нормалей, если можно сделать это и избежать накладные GL_NORMALIZE. Избегайте использования glScale * () при выполнении освещения, поскольку он почти всегда требует, чтобы иметь возможность GL_NORMALIZE.
    Установить glShadeModel () для GL_FLAT плавного затенения, если это не требуется.
    Использование единого glClear () вызова на фрейм, если это возможно. Не используйте glClear () для очистки небольших субрегионах буферами, поэтому используйте его только для полного или почти полного очищает.
    Использование одного звонка на glBegin (GL_TRIANGLES) использовать несколько независимых треугольников, а не требующие glBegin (GL_TRIANGLES) несколько раз, или позвонив glBegin (GL_POLYGON). Даже если только один треугольник, который можно сделать, используйте GL_TRIANGLES, а не GL_POLYGON. Использование одного звонка на glBegin (GL_QUADS) в том же порядке, а не требующие glBegin (GL_POLYGON) повторно. Кроме того, использование одного звонка на glBegin (GL_LINES) использовать несколько независимых отрезков, а не требующие glBegin (GL_LINES) несколько раз.
    Некоторые реализации OpenGL выгоды от хранения вершинных данных в вершинных массивов. Использование вершинных массивах уменьшает накладные расходы вызова функции. В некоторых реализациях может повысить производительность, пакетной обработки или повторного использования обработанных вершин.
    В целом, использование векторных форм команды precomputed передачи данных и использования скалярной формы команд для передачи ценностей, которые вычисляются возле время вызова.
    Избегать излишней режиме изменения, такие как установление цвет же значение в диапазоне от каждой вершине плоского затенены многоугольник.
    Не забудьте отключить дороже rasterization и за-фрагмент операций при взятии или копирования изображений. OpenGL будет даже применять текстуры на пиксел изображения, если попросят!
    Если абсолютно необходимо, избежать различных передних и задних полигон режимах.
    <A Name=name3>
    GLX Советы

    Используйте glXWaitGL () вместо glFinish (), чтобы заставить X делает команды для оказания последующей GL команд.
    Кроме того, используйте glXWaitX (), а не XSync (), чтобы заставить GL делает команды для последующей X оказания команд.
    Будьте осторожны при использовании glXChooseVisual (), потому что логическое выбор подбираются точно. Поскольку некоторые реализаций не будет экспортировать изображения со всеми сочетаниями логическое возможностями, вы должны позвонить glXChooseVisual () несколько раз с разными булевы значения, прежде чем бросить. Например, если ни один буферный-визуальное с требуемыми характеристиками можно ознакомиться, проверить, дважды буферизованные визуальный с теми же возможностями. Может быть, и она проста в использовании

  2. #12
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Talking Re: Graphics OpenGL трёхмерное и прочее

    Оу, о чём это, мне интересно как использовать процедуры чтобы отобразить хоть что-то на экране, куда там до хитроумных преобразований моделей мира, хоть что-либо появилось бы на экране. :leader:

  3. #13
    Патриот смешно's Avatar
    Join Date
    Apr 2003
    Location
    Страна чудес
    Posts
    55,561

    Default Re: Graphics OpenGL трёхмерное и прочее

    Я же тебе целую книгу дал, читай. Гыыыы.
    4 main reasons why Boston is the best place to live:Red Sox (Baseball), Patriots (Football) World Champions
    Celtics the NBA (Basketball), Bruins Stanley Cup (Hockey)

  4. #14
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Talking Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by смешно
    Я же тебе целую книгу дал, читай. Гыыыы.
    Чего-то странно, пишу glViewport(0, 0, 100, 100) и т.п., а цвет окна тот же, а glGetError почему-то равен 2. :leader:

  5. #15
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Smile Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by смешно
    Я же тебе целую книгу дал, читай. Гыыыы.
    Эта книга недостаточно точно и полностью рассказывает про OpenGL. :cheer:

  6. #16
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Smile Re: Graphics OpenGL трёхмерное и прочее

    А в этой книге не указаны элементы структуры PIXELFORMATDESCRIPTOR.
    И вообще надо было начать книгу именно с того как включить OpenGL для отображения в разных OS, а не рассказывать чушь про
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    что конечно же ещё работать не будет. :cheer:

  7. #17
    Патриот смешно's Avatar
    Join Date
    Apr 2003
    Location
    Страна чудес
    Posts
    55,561

    Default Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by algoritm
    Эта книга недостаточно точно и полностью рассказывает про OpenGL. :cheer:

    Напиши свою. Да и вообще по хорошему самому надо писать графические двигатели, а не пользоваться халявой тем более если не знаешь как ей пользоваться.
    4 main reasons why Boston is the best place to live:Red Sox (Baseball), Patriots (Football) World Champions
    Celtics the NBA (Basketball), Bruins Stanley Cup (Hockey)

  8. #18
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

    Default Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by algoritm
    И так как правильно сделать программу на opengl ?
    Сначала библиотеку libMesa скомпилировать из исходников можно вообще-то...
    Там ответа "правильно/неправильно" - почти нет - хотя бы потому , что есть более "высокоуровневые" библиотеки на основе OpenGL (libIrrlicht - к примеру) :leader:
    Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
    Строить Асгардию побуждает тьма, посетившая людские души

  9. #19
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Smile Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by смешно
    Напиши свою. Да и вообще по хорошему самому надо писать графические двигатели.
    Вот и предлагаю в этой теме рассуждать о всех трудностях и вопросах связанных с чем-либо трёхмерным, так что welcome. :cheer:
    О графических двигателях здесь никто пока и слова не сказал.
    Сначала как вообще-то хоть что-нибудь нарисовать.
    Цитирую из википедии:
    "OpenGL (Open Graphics Library — открытая графическая библиотека) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трехмерную компьютерную графику." :cheer:

  10. #20
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Smile Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by crazy-mike
    Сначала библиотеку libMesa скомпилировать из исходников можно вообще-то...
    Там ответа "правильно/неправильно" - почти нет - хотя бы потому , что есть более "высокоуровневые" библиотеки на основе OpenGL (libIrrlicht - к примеру) :leader:
    Интересно как самостоятельно включить отображение OpenGL без специальных библиотек, которые часто авторские, то есть по простому без особенностей, но так чтоб треугольник нарисовать к примеру. :cheer:

Page 2 of 5 FirstFirst 12345 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Russian America Top. Рейтинг ресурсов Русской Америки. Terms of Service | Privacy Policy Рейтинг@Mail.ru