GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (177 стр.)

Сообщения на форуме пользователя Andrey (177 стр.)

Создание DOT3 Bump'a22 мая 200612:26#24
Mephisto std
ушло
Direct3D22 мая 200612:23#9
Geza
www.codesampler.com смотри тут может что еще есть...
Direct3D22 мая 200611:18#7
Geza
отправил пример по Shadow Map.
Создание DOT3 Bump'a22 мая 20069:53#22
Mephisto std
Давай мыло...
"Графика трёхмерной компьютерной игры на осове OpenGL"19 мая 200613:31#1
M|0nxGauzen
>Посоветуйте, стоит ли новичку браться за книгу Борескова "Графика трёхмерной компьютерной игры на осове OpenGL"
новечик новичку рознь все зависит от твоего уровня подготовки в первую очередь по C++ и математическому аппарату.
Если с этим проблем нет то можно ее читать. т.к. описание ориентировно на глубокое знание С++, паттернов проектирования.
В книге очень хороший теоретический материал. Много математических выкладок большинство которых сразу реализованы в программно коде.
После прочтения red book читать эту книгуможно. Книга очень хорошая именно по ней я начал пониать что из себя представляет движок, неважно на чем сделан его рендер на Direct3D или OpenGL.
Шаг первый ... (комментарии)19 мая 200612:42#8
Oldman
>Я вообще не собираюсь использовать встроенные в D3D и OpenGL возможности работы с матрицами.
а вот это зря не знаю даже скорость возможно понизиться...
>Не потому что я думаю, что мои решения будут более производительны ... :) Моя цель, не столько конечный результат в виде движка, сколько сам процесс его >создания, в котором я осваиваю основные алгоритмы решения тех или иных задач, то есть обучаюсь. Конечно, проще всего было использовать готовые библиотеки и >сделать все в несколько раз быстрее ... Но что бы я от этого приобрел? Умение работать с чужими библиотеками?
>Конечно, я не собираюсь изобретать велосипед. Я так же подцепляю это из различных исходников и статей, разбираюсь как это работает, почему это вообще >работает :), что можно сделать, чтобы это работало лучше.
думай сам мне кажеться лучше бы заняться другими направлениями чем разарботка контейнеров насчет производительности сомневаюсь в лучшем случае будет точно так-же...
>Вообще это первый комментарий кода в данном сообществе. А жаль ... Создавая сообщество я хотел получить больше комментариев, критики ... А то непонятно, то ли >я совсем все не так делаю, то ли придраться не к чему .. :)
ну почему-же я буду заходить сюда делать коментраии советы дело в том что я тоже пишу свой "обучающий" движок на котором что-то испытавая изучаю соединяю в 1 целое примерно то что ты сейчас делаешь но правда немного отличаются цели в плапне велосипедов STL :) а так целя одна.
Если что сутчись в аську можем опытом обмениваться...
Создание DOT3 Bump'a19 мая 20069: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++.
удачи
Шаг первый ... (комментарии)18 мая 200620:43#6
Oldman
Привет !!!
есть небольшие коментарии по коду...
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));
  }
Вместо switch'а и для каждого API харанить уже заранее проинициализированный массив типов примитивов.
тогда указывая параметр типа примитива береться соответвующая константа
у меня сделано так:
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;
}
почему для стека матрицы не используешь ID3DXMatrixStack? очень удобная вещь. Насчет матриц у меня у меня сделано как  у тебя :)
//сохранить матрицу вида в стек
void Direct3DRender::PushViewMatrix() const
{
#ifdef _DEBUG
  //записать в стек
  HRESULT hr = matStack -> Push();  
  OutDirect3DError(hr);
#else
  //записать в стек
  matStack -> Push();  
#endif  
}
еще я завел такие методы как Translate к примеру... как в OpenGL
Чем темя не устраивает STL просто ты сделал свои контейнеры...
в общем если что буду заглядывать :)
а так в целом неплохо но с мультирендером не так все просто я вот пытался делать и сцен а грузиться и т.д. как дошел до шейдеров теней пиксельного освещения все усложнилось.Хотел статьбю на сайт закинуть потом передумал что-то слабовато еще...
С++ R.I.P?18 мая 200617:54#76
LS
>когда же ты избавишься от всех остальных мифов? ирторический вопрос.
да ладно тебе это мое мнение :) никаких мифов доказательств море...
С++ R.I.P?18 мая 200616:33#71
Tharnum
ну ладно не так понял :)
С++ R.I.P?18 мая 200615:47#67
Tharnum
>Ну, конечно же, Дельфи убил бы C++ сразу после своего первого релиза, а потом настал бы коммунизм ;)
бред... почитай книгу "Дизай и эволюция языка C++"
и поймешь что есть компиляторы C/C++ и что есть убожество Delphi и т.д....
С++ R.I.P?18 мая 200615:16#60
Tharnum
>Мечта идиота: Дельфи + GC + сборник из 1.000.000 компонентов на все случаи жизни (даже TQuake5 и TSingularity) и все кросс-платформенное.
:)))))))))))))))))))
>C++Builder вам в помощь (чувствую, кого-то перекосило ;) - VC (ИМХО, но очень прочное) с извратом, названным MFC, рядом не стоит.
не согласен MFC намного стабильнее и быстрей работает...
Отсечение по пирамиде видимости(frustum culling)18 мая 200610:57#1
Ravager
Эти плоскости формируются согласно уравнению плоскости согласно аналитической геометрии:
A*x + b*y + C*z + D = 0;
где A,D,C - Vector Normal{A, B. C} - нормаль к плоскости;
D- ароде расстояние по нормале до плоскоси от начала координат.
как конкретно получаются эти значения из матриц можно подробно проследить согласно формируемым матрицам зная что храниться в строке столбце. Но этим я не занимался поэтому не могу сказать.
Как сделать Print screen?18 мая 20060: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;
}

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр