Сообщения на форуме пользователя Andrey (177 стр.)
Создание DOT3 Bump'a | 22 мая 2006 | 12:26 | #24 |
---|
Mephisto std
ушло
ушло
Direct3D | 22 мая 2006 | 12:23 | #9 |
---|
Geza
www.codesampler.com смотри тут может что еще есть...
www.codesampler.com смотри тут может что еще есть...
Создание DOT3 Bump'a | 22 мая 2006 | 9:53 | #22 |
---|
Mephisto std
Давай мыло...
Давай мыло...
"Графика трёхмерной компьютерной игры на осове OpenGL" | 19 мая 2006 | 13:31 | #1 |
---|
M|0nxGauzen
>Посоветуйте, стоит ли новичку браться за книгу Борескова "Графика трёхмерной компьютерной игры на осове OpenGL"
новечик новичку рознь все зависит от твоего уровня подготовки в первую очередь по C++ и математическому аппарату.
Если с этим проблем нет то можно ее читать. т.к. описание ориентировно на глубокое знание С++, паттернов проектирования.
В книге очень хороший теоретический материал. Много математических выкладок большинство которых сразу реализованы в программно коде.
После прочтения red book читать эту книгуможно. Книга очень хорошая именно по ней я начал пониать что из себя представляет движок, неважно на чем сделан его рендер на Direct3D или OpenGL.
>Посоветуйте, стоит ли новичку браться за книгу Борескова "Графика трёхмерной компьютерной игры на осове OpenGL"
новечик новичку рознь все зависит от твоего уровня подготовки в первую очередь по C++ и математическому аппарату.
Если с этим проблем нет то можно ее читать. т.к. описание ориентировно на глубокое знание С++, паттернов проектирования.
В книге очень хороший теоретический материал. Много математических выкладок большинство которых сразу реализованы в программно коде.
После прочтения red book читать эту книгуможно. Книга очень хорошая именно по ней я начал пониать что из себя представляет движок, неважно на чем сделан его рендер на Direct3D или OpenGL.
Шаг первый ... (комментарии) | 19 мая 2006 | 12:42 | #8 |
---|
Oldman
>Я вообще не собираюсь использовать встроенные в D3D и OpenGL возможности работы с матрицами.
а вот это зря не знаю даже скорость возможно понизиться...
>Не потому что я думаю, что мои решения будут более производительны ... :) Моя цель, не столько конечный результат в виде движка, сколько сам процесс его >создания, в котором я осваиваю основные алгоритмы решения тех или иных задач, то есть обучаюсь. Конечно, проще всего было использовать готовые библиотеки и >сделать все в несколько раз быстрее ... Но что бы я от этого приобрел? Умение работать с чужими библиотеками?
>Конечно, я не собираюсь изобретать велосипед. Я так же подцепляю это из различных исходников и статей, разбираюсь как это работает, почему это вообще >работает :), что можно сделать, чтобы это работало лучше.
думай сам мне кажеться лучше бы заняться другими направлениями чем разарботка контейнеров насчет производительности сомневаюсь в лучшем случае будет точно так-же...
>Вообще это первый комментарий кода в данном сообществе. А жаль ... Создавая сообщество я хотел получить больше комментариев, критики ... А то непонятно, то ли >я совсем все не так делаю, то ли придраться не к чему .. :)
ну почему-же я буду заходить сюда делать коментраии советы дело в том что я тоже пишу свой "обучающий" движок на котором что-то испытавая изучаю соединяю в 1 целое примерно то что ты сейчас делаешь но правда немного отличаются цели в плапне велосипедов STL :) а так целя одна.
Если что сутчись в аську можем опытом обмениваться...
>Я вообще не собираюсь использовать встроенные в D3D и OpenGL возможности работы с матрицами.
а вот это зря не знаю даже скорость возможно понизиться...
>Не потому что я думаю, что мои решения будут более производительны ... :) Моя цель, не столько конечный результат в виде движка, сколько сам процесс его >создания, в котором я осваиваю основные алгоритмы решения тех или иных задач, то есть обучаюсь. Конечно, проще всего было использовать готовые библиотеки и >сделать все в несколько раз быстрее ... Но что бы я от этого приобрел? Умение работать с чужими библиотеками?
>Конечно, я не собираюсь изобретать велосипед. Я так же подцепляю это из различных исходников и статей, разбираюсь как это работает, почему это вообще >работает :), что можно сделать, чтобы это работало лучше.
думай сам мне кажеться лучше бы заняться другими направлениями чем разарботка контейнеров насчет производительности сомневаюсь в лучшем случае будет точно так-же...
>Вообще это первый комментарий кода в данном сообществе. А жаль ... Создавая сообщество я хотел получить больше комментариев, критики ... А то непонятно, то ли >я совсем все не так делаю, то ли придраться не к чему .. :)
ну почему-же я буду заходить сюда делать коментраии советы дело в том что я тоже пишу свой "обучающий" движок на котором что-то испытавая изучаю соединяю в 1 целое примерно то что ты сейчас делаешь но правда немного отличаются цели в плапне велосипедов STL :) а так целя одна.
Если что сутчись в аську можем опытом обмениваться...
Создание DOT3 Bump'a | 19 мая 2006 | 9:36 | #6 |
---|
FreemaN
>и OpenGL 2.0 на нем найти не могу, а OpenGL 2.0 это КРУТО.
зачем тебе OpenGL 2.0? dot3 поддерживает это в версии ниже 2.0 т.к. на Radeon 9200SE с версией OpenGL 1.3.. у меня он работает...
если нужен OpenGL 2.0 то читай фак:http://www.gamedev.ru/faq/?id=14 как ты его на глюкале Delphi делать будешь подсказать не могу...
>Примерчики класс, но хотелось бы чё нибудь по проще, а то мозги от таких кодов сплавятся.
>(Я ведь ещё только учусь этому)
вот тут ты ошибаешься примерчики самые примитивные там простейший кубик освещается их можно взять за основу ведь проще не найдешь.
Еще можешь посмотреть вот это:
http://steps3d.animekazan.net/tutorials/dot3-tutorial.html
но там C++.
удачи
>и OpenGL 2.0 на нем найти не могу, а OpenGL 2.0 это КРУТО.
зачем тебе OpenGL 2.0? dot3 поддерживает это в версии ниже 2.0 т.к. на Radeon 9200SE с версией OpenGL 1.3.. у меня он работает...
если нужен OpenGL 2.0 то читай фак:http://www.gamedev.ru/faq/?id=14 как ты его на глюкале Delphi делать будешь подсказать не могу...
>Примерчики класс, но хотелось бы чё нибудь по проще, а то мозги от таких кодов сплавятся.
>(Я ведь ещё только учусь этому)
вот тут ты ошибаешься примерчики самые примитивные там простейший кубик освещается их можно взять за основу ведь проще не найдешь.
Еще можешь посмотреть вот это:
http://steps3d.animekazan.net/tutorials/dot3-tutorial.html
но там C++.
удачи
Шаг первый ... (комментарии) | 18 мая 2006 | 20:43 | #6 |
---|
Oldman
Привет !!!
есть небольшие коментарии по коду...
Вместо switch'а и для каждого API харанить уже заранее проинициализированный массив типов примитивов.
тогда указывая параметр типа примитива береться соответвующая константа
у меня сделано так:
почему для стека матрицы не используешь ID3DXMatrixStack? очень удобная вещь. Насчет матриц у меня у меня сделано как у тебя :)
Чем темя не устраивает STL просто ты сделал свои контейнеры...
в общем если что буду заглядывать :)
а так в целом неплохо но с мультирендером не так все просто я вот пытался делать и сцен а грузиться и т.д. как дошел до шейдеров теней пиксельного освещения все усложнилось.Хотел статьбю на сайт закинуть потом передумал что-то слабовато еще...
Привет !!!
есть небольшие коментарии по коду...
switch (p_AEPrimitiveType) { case AE_TRIANGLES: glDrawElements(GL_TRIANGLES, p_IndexCount, GL_UNSIGNED_INT, BUFFER_OFFSET(p_FirstIndex)); break; case AE_TRIANGLE_STRIP: glDrawElements(GL_TRIANGLE_STRIP, p_IndexCount, GL_UNSIGNED_INT, BUFFER_OFFSET(p_FirstIndex)); break; case AE_LINES: glDrawElements(GL_LINE, p_IndexCount, GL_UNSIGNED_INT, BUFFER_OFFSET(p_FirstIndex)); } |
тогда указывая параметр типа примитива береться соответвующая константа
у меня сделано так:
class Render { ... // массив типов примитивов static unsigned int PrimitiveType[]; // типы примитивов enum { TRIANGLE_LIST, // список полигонов QUADS_LIST, // список прямоугольников POINT_LIST, // список точек LINE_LIST // список линий }; .... }; тогда в констукторе для каждого рендера: [code = cpp] Direct3DRender::Direct3DRender() : pD3D(NULL), pDevice(NULL), matStack(NULL) { ... // тип примитивов PrimitiveType[Render::TRIANGLE_LIST] = D3DPT_TRIANGLELIST; PrimitiveType[Render::POINT_LIST] = D3DPT_POINTLIST; PrimitiveType[Render::LINE_LIST] = D3DPT_LINELIST; ... } OpenGLRender::OpenGLRender() : hDC(NULL), hGLRC(NULL) { ..... // тип примитивов PrimitiveType[Render::TRIANGLE_LIST] = GL_TRIANGLES; PrimitiveType[Render::POINT_LIST] = GL_POINT; PrimitiveType[Render::LINE_LIST] = GL_LINE; }
//сохранить матрицу вида в стек void Direct3DRender::PushViewMatrix() const { #ifdef _DEBUG //записать в стек HRESULT hr = matStack -> Push(); OutDirect3DError(hr); #else //записать в стек matStack -> Push(); #endif } еще я завел такие методы как Translate к примеру... как в OpenGL
в общем если что буду заглядывать :)
а так в целом неплохо но с мультирендером не так все просто я вот пытался делать и сцен а грузиться и т.д. как дошел до шейдеров теней пиксельного освещения все усложнилось.Хотел статьбю на сайт закинуть потом передумал что-то слабовато еще...
С++ R.I.P? | 18 мая 2006 | 17:54 | #76 |
---|
LS
>когда же ты избавишься от всех остальных мифов? ирторический вопрос.
да ладно тебе это мое мнение :) никаких мифов доказательств море...
>когда же ты избавишься от всех остальных мифов? ирторический вопрос.
да ладно тебе это мое мнение :) никаких мифов доказательств море...
С++ R.I.P? | 18 мая 2006 | 16:33 | #71 |
---|
Tharnum
ну ладно не так понял :)
ну ладно не так понял :)
С++ R.I.P? | 18 мая 2006 | 15:47 | #67 |
---|
Tharnum
>Ну, конечно же, Дельфи убил бы C++ сразу после своего первого релиза, а потом настал бы коммунизм ;)
бред... почитай книгу "Дизай и эволюция языка C++"
и поймешь что есть компиляторы C/C++ и что есть убожество Delphi и т.д....
>Ну, конечно же, Дельфи убил бы C++ сразу после своего первого релиза, а потом настал бы коммунизм ;)
бред... почитай книгу "Дизай и эволюция языка C++"
и поймешь что есть компиляторы C/C++ и что есть убожество Delphi и т.д....
С++ R.I.P? | 18 мая 2006 | 15:16 | #60 |
---|
Tharnum
>Мечта идиота: Дельфи + GC + сборник из 1.000.000 компонентов на все случаи жизни (даже TQuake5 и TSingularity) и все кросс-платформенное.
:)))))))))))))))))))
>C++Builder вам в помощь (чувствую, кого-то перекосило ;) - VC (ИМХО, но очень прочное) с извратом, названным MFC, рядом не стоит.
не согласен MFC намного стабильнее и быстрей работает...
>Мечта идиота: Дельфи + GC + сборник из 1.000.000 компонентов на все случаи жизни (даже TQuake5 и TSingularity) и все кросс-платформенное.
:)))))))))))))))))))
>C++Builder вам в помощь (чувствую, кого-то перекосило ;) - VC (ИМХО, но очень прочное) с извратом, названным MFC, рядом не стоит.
не согласен MFC намного стабильнее и быстрей работает...
Отсечение по пирамиде видимости(frustum culling) | 18 мая 2006 | 10:57 | #1 |
---|
Ravager
Эти плоскости формируются согласно уравнению плоскости согласно аналитической геометрии:
A*x + b*y + C*z + D = 0;
где A,D,C - Vector Normal{A, B. C} - нормаль к плоскости;
D- ароде расстояние по нормале до плоскоси от начала координат.
как конкретно получаются эти значения из матриц можно подробно проследить согласно формируемым матрицам зная что храниться в строке столбце. Но этим я не занимался поэтому не могу сказать.
Эти плоскости формируются согласно уравнению плоскости согласно аналитической геометрии:
A*x + b*y + C*z + D = 0;
где A,D,C - Vector Normal{A, B. C} - нормаль к плоскости;
D- ароде расстояние по нормале до плоскоси от начала координат.
как конкретно получаются эти значения из матриц можно подробно проследить согласно формируемым матрицам зная что храниться в строке столбце. Но этим я не занимался поэтому не могу сказать.
Как сделать Print screen? | 18 мая 2006 | 0:56 | #8 |
---|
iliaforever
//созданипе скриншота bool Direct3DRender::CreateScreenShot(const string& filename) const { //ширина изображения unsigned int Width = currentMode.GetWidth(); //высота изображения unsigned int Height = currentMode.GetHeight(); //поверхность IDirect3DSurface9 *pDestSurface = NULL; //создать поверхность HRESULT hr = pDevice -> CreateOffscreenPlainSurface(Width, Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &pDestSurface, NULL); OutDirect3DError(hr); //проверка ошибок if (hr != S_OK) { OutDirect3DError(hr); return false; } //создание буфера и копирования в память hr = pDevice -> GetFrontBufferData(0, pDestSurface); OutDirect3DError(hr); if (hr != S_OK) { //деинициализация if (pDestSurface) { pDestSurface -> Release(); pDestSurface = NULL; } return false; } if (pDestSurface) { //сохранить в файл hr = D3DXSaveSurfaceToFile(filename.c_str(), D3DXIFF_JPG, pDestSurface, NULL, NULL); OutDirect3DError(hr); pDestSurface -> Release(); pDestSurface = NULL; } return true; } |