|
|
|
Канал Игры Мечты: «FAQ по OpenGL» |
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Что-то мне подсказывает, что проблема тут:
hPBuffer:= NULL;
...
hPBuffer := wglCreatePbufferARB( g_hDC, pixelFormat, nWidth, nHeight, nil )
wglCreatePbufferARB, видимо, возвертает int64, отсюда и ноги растут.
_________________ У меня бисера не доxеpа. |
|
|
Варсик
545 EGP
    Рейтинг канала: 4(81) Репутация: 117 Сообщения: 4041 Откуда: Москва Зарегистрирован: 22.12.2002
 |
|
А pBuffer - Это int64, а не Pointer. Fill the difference
_________________ WARNING: By reading this post you accept that this post is genius. |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
http://delphi3d.net/download/pbuffer.zip
_________________ MOV topka, C++ |
|
|
Duh
101 EGP
 Репутация: 20 Сообщения: 269 Откуда: Ярославль Зарегистрирован: 18.07.2004
 |
|
Заработало. Теперь моя иметь P-буфер, а не он меня! Всем спасибо.
Шобы не мусорить, объединил посты. Add later:
Сейчас у меня все заточено под тип Double, а движек мой развился до стадии, за которой менять тип данных станет дико гиморно. В связи с этим хочется поинтересоваться, какой тип данных стоит использовать для хранения меша?
С одной стороны ясен пень, что 4 байтА за переменную хранить куда приятнее (особенно когда хранить надо в видяхе), чем в 8 байтах, отпущенных под Double. С другой - у Double приличная точность, а размер массивов меркнет рядом с размером текстур. Вобщем хочется поинтересоваться - стоит ли отказываться от Double в пользу glFloat или нет?
Последний раз редактировалось: Duh (12:34 03-06-2008), всего редактировалось 3 раз(а) |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
single (delphi) / float (C++) - твой выбор без сомнений должен быть.
double не имеет аппаратной поддержки.
_________________ MOV topka, C++ |
|
|
Duh
101 EGP
 Репутация: 20 Сообщения: 269 Откуда: Ярославль Зарегистрирован: 18.07.2004
 |
|
Jurec : |
double не имеет аппаратной поддержки.
|
т.е. это как - у меня же комп не софтово рендерит, а в VBO и P-buffer я пихаю Double (только для цвета звездочек юзаю glFloat) и усе фурычит.
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Duh : |
в VBO и P-buffer я пихаю Double
|
драйвер переводит его в single
_________________ MOV topka, C++ |
|
|
Duh
101 EGP
 Репутация: 20 Сообщения: 269 Откуда: Ярославль Зарегистрирован: 18.07.2004
 |
|
Jurec: Понял, спасибо.
|
|
|
Железный
51 EGP
 Рейтинг канала: 1(3) Репутация: 0 Сообщения: 43
Зарегистрирован: 04.04.2008
 |
|
2J, чего ты придумал еще?
Double всегда поддерживался сопроцессором именно как родной 32 битный формат! А еще лучше использовать extended - 64 битный. И преобразование Single-Double - это лишний шаг (особенно под отладчиком)
Другое дело GPU - там свои заморочки.
Поэтому нужно разделять, где код выполняется - в основном на проце (физика, скажем, ну и обработка матриц), либо на ускорителе - тогда встроенные типы нужно использовать, с префиксом gl
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Железный : |
А еще лучше использовать extended - 64 битный.
|
Зачем такая точность?
Железный : |
Другое дело GPU - там свои заморочки.
|
О GPU и речь, вообще-то.
Это именно GPU.
Железный : |
Поэтому нужно разделять, где код выполняется - в основном на проце (физика, скажем, ну и обработка матриц), либо на ускорителе - тогда встроенные типы нужно использовать, с префиксом gl
|
Да? И чтоб отправить в GPU надо будет делать преобразование Double -> glFloat ? Зачем?
Железный : |
тогда встроенные типы нужно использовать, с префиксом gl
|
Посмотри внимательно на эти типы в заголовочном файле. Там чётко написано
type
glFloat = single;
_________________ MOV topka, C++ |
|
|
Железный
51 EGP
 Рейтинг канала: 1(3) Репутация: 0 Сообщения: 43
Зарегистрирован: 04.04.2008
 |
|
2J
Цитата: |
type
glFloat = single;
|
Да знаю я, смысл коммента был не в этом...
Цитата: |
И чтоб отправить в GPU надо будет делать преобразование Double -> glFloat ? Зачем?
|
Затем, что мы здесь все работаем над космическими масштабами. Чем больше разрядность дробного числа в базе, тем с большей "локацией" можно работать.
Давай посчитаем. Локация "Земля-Луна", минимум 800 тыс км. Чтобы отрисовать корабль, нужен минимум сантиметровый шаг буфера глубины. Выходит, что "наша" разрядность - 0.000 000 000 000 001 - и это в Double не впихнуть.
Преобразование Ext -> Single мелочь, поскольку в видимой области будет минимум объектов, а уж локальные данные можешь хранить в любом формате.
|
|
|
Shirson
1605 EGP
           Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002
 |
|
Железный : |
Давай посчитаем. Локация "Земля-Луна", минимум 800 тыс км. Чтобы отрисовать корабль, нужен минимум сантиметровый шаг буфера глубины. Выходит, что "наша" разрядность - 0.000 000 000 000 001 - и это в Double не впихнуть.
|
Не мог бы ты посчитать наглядно (как ты получил 0.000 000 000 000 001) ? А то твоя занимательная математика не воспроизводится
В восьмибайтном числе можно уместить всё Солнечную систему с точностью до мм и еще место останется.
_________________ У меня бисера не доxеpа.
Последний раз редактировалось: Shirson (17:17 10-06-2008), всего редактировалось 2 раз(а) |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Железный : |
Чтобы отрисовать корабль, нужен минимум сантиметровый шаг буфера глубины.
|
Вот тут поподробнее..
Очень сомневаюсь что ты будешь за раз выводить всю солнечную систему.
_________________ MOV topka, C++ |
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
а нет проблем за раз вывести всю солнечную систему
могу только догадываться зачем Duh'у понадобился Р-буфер... но задник можно например выводить в него
хотя гораздо проще для задников отключиить Z-буфер, отсортировать их самостоятельно и нарисовать, потом включить обратно и нарисовать уже ближнюю сцену с нужной степенью детальности
32 бита вполне достаточно для этого + разумнее конечно пользоваться типами, поддерживаемыми аппаратно напрямую, то есть в данном случае флоатом
_________________ This is what you get ...
(c) Radiohead |
|
|
Zachesa
151 EGP
  Рейтинг канала: 4(95) Репутация: 13 Сообщения: 1420 Откуда: Хабаровск Зарегистрирован: 12.11.2007
 |
|
Где-то в сети видел информацию, где сделали высокопроизводительный сервер, где вычисления идут с помощью процессоров видеокарт, в итоге компьютер с одной платой и процессором AMD, с четырьмя GForce, работает быстрее кластера из сотни компьютеров на Core 2 Duo. Имеет смысл всем программистам глубже изучить устройство современных GPU, их можно использовать не только для графики но и для ускорения других процессов.
|
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
Zachesa : |
Где-то в сети видел информацию
|
очень многообещающее начало...
вообще это гониво (в железный канал - юмор)
Цитата: |
в итоге компьютер с одной платой и процессором AMD, с четырьмя GForce, работает быстрее кластера из сотни компьютеров на Core 2 Duo.
|
ты хоть думал чего пишешь?
один АМД (какой ?) + 4 GF быстрее 100 х Core2Duo
что значит быстрее?
в мегагерцах?
или всё-таки во флопах, как принято считать в порядочном обществе?
а вообще узкозаточенный (на несколько операций) GPU никогда не переплюнет CPU по общей производительности
_________________ This is what you get ...
(c) Radiohead |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Sh.Tac. : |
а вообще узкозаточенный (на несколько операций) GPU никогда не переплюнет CPU по общей производительности
|
Sh.Tac. : |
вообще это гониво (в железный канал - юмор)
|
Скажем так, в некоторых операциях, используя GPGPU можно переплюнуть CPU в сотни раз. Но есть свои довольно большие ограничения. Это сложно, но можно.
Кстати, физику сейчас модно переносить на GPU - производительность очень отличается от физики на CPU. Другое дело что
Zachesa : |
работает быстрее кластера из сотни компьютеров на Core 2 Duo
|
преувеличены цифры
Гугли nVidia CUDA.
_________________ MOV topka, C++ |
|
|
Endeavour
1015 EGP
       Рейтинг канала: 1(2) Репутация: 105 Сообщения: 7041 Откуда: guess Зарегистрирован: 26.05.2005
 |
|
http://www.overclockers.ru/hardnews/29346.shtml
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
О, действительно.
_________________ MOV topka, C++ |
|
|
Zachesa
151 EGP
  Рейтинг канала: 4(95) Репутация: 13 Сообщения: 1420 Откуда: Хабаровск Зарегистрирован: 12.11.2007
 |
|
Sh.Tac. : |
(в железный канал - юмор)
|
безо всякого смеха. Скажем для выполнения алгоритмов ИИ, где многие задачи можно распараллелить, вдруг удастся задействовать ресурсы GPU. Единственно в ближайшие годы врядли увидим возможность использовать эти возможности в визуальных средах разработки (Visio, Delphi) народ помешался на графических красотах, а хороший ИИ на последнем месте.
|
|
|
|
|
|
Канал Игры Мечты: «FAQ по OpenGL» |
|