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

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

Аналоги OpenGL - DirectX19 дек. 200612:38#9
antber
>И что это за буфер в конце концов, применительно для DirectX?
создаешь текстуру с флагом D3DUSAGE_RENDERTARGET это и будет примерно тоже самое.
evirus
хотя бы знать основы каждого API не будет проблем с изучением докусеентации и т.д.
Аналоги OpenGL - DirectX19 дек. 200611:47#1
antber
изучай оба API
тогда не будет проблем.
FBO, P-buffer это средства применяемое к примеру для рендера в текстуру.
>какой у него кэпс?
нету caps'ов в OpenGL. что-бы узнать возможности нужно проверять наличие расширений поддерживаемых картой.
Менеджмент сцены18 дек. 200619:30#3
>вот тут может быть оверхед когда он не полностью виден.
может поэтому лучше спуститься по дереву
ну в общем у тебя получился что=-то тима усовершенствованyого Scene Graph'а
если есть окклюдеры и порталы то это дополнительно делает оптимизацию
вроде все норимально идея жизнеспособна. Но конкретные вопросы и проблемы могут возникать по ходу реализации.
Менеджмент сцены18 дек. 200618:57#1
>Вся геометрия режется на octree тайлы.
вот тут поподробней
туда что входит геометрия ландшафта модели полностью с AABB или может кусок входить и т.д.
>Каждый тайл содержит в себе hardware index и vertex буферы. (по одному)
формат вершин одинаковый для всего BV/IB или нет? как быть с разными форматами
>Для индуров мы создаем надстройку в виде зон, порталов и окклюдеров.
>Т.е. тайлы никуда не деваются.
тоже не совсем понятно что такое окклюдер? (можно куда нибудь меня заслать почитать книжки я с удовольствием ;) )
>Выгода в том, что геометрия лежит в видеокарте и индексы совсем
>не считаются каждый кадр.
для статики это понятно, как дело обстоит с динамическими объектами? будет отслеживание перемещение  по острее тайлам?
>Минус в дополнительном рисовании излишней невидимой геометрии.
это почему? если веден острее тайл полностю, рендерим все без проверки вглубь дерева, иначе спуск по дереву. тут нужно оптимально подобрать соотношение нагрузки CPU/GPU или я неправильно понимаю?
Протестите прогу с GLSL освещением15 дек. 200619:25#14
Ferrum
работает GeForce 6600
Radeon 9600 прога падает :(
Выбор бесплатного графического движка14 дек. 200610:57#140
Keysal
Я смотрел но не очень глубоко.
Lua. Как прочесть значение переменной из конфига.13 дек. 200618:13#11
nstd
да + есть, но что не удобно что отдельно файлы нужно таскать для связки классов...
luabind все в несколько строк подключает
Lua. Как прочесть значение переменной из конфига.13 дек. 200614:25#8
nstd
Спасибо!!!
ну что-то сильно много по сравнению с luabind
Выбор бесплатного графического движка13 дек. 200611:08#123
V0id
Говорят ничего движок... скриншоты впечатляют и исходники грамотные
Lua. Как прочесть значение переменной из конфига.12 дек. 200614:06#6
nstd
приведи пожалуйста пример использования tolua++
к примеру для такого класса
struct  GameObject {
int curState;
bool isEmpty;
};
и простейший скрипт который меняет данные.
с C++  кодом который это все связывает.
спасибо заранее.
Lua Coroutines12 дек. 200613:59#6
+
Выбор бесплатного графического движка12 дек. 200613:07#113
Andrushka
закинь в качалку!
если много давай на мыло
Выбор бесплатного графического движка11 дек. 200611:54#85
IronBunny
>;) ето что реально такая вот красота внутре у Irrlicht? Ну да, это по-пацански наверное....
да да реально!!!
Z вот уже не 1 сообщение видел на форуме о том что Irrlicht быстрый, вот и решал спросить, но ответа и не дождался...
Значит шейдеры поддерживает, а вот рендер геометрии на убогом уровне...
а вообще это только 1 большой минус этого движка. В общем он  простой и понятный. Но для нормальных проектов боже упаси его
использовать!!
ЗлобныйШкольнег
>чем сверхоптимизированный рендер.
это даже не оптимизация рендера это основы основ!!! избегать передачи геометрических данных CPU->GPU.
Выбор бесплатного графического движка11 дек. 200611:21#80
resurected_timofei
>CrystalSpace
ну очень там много всего...  но не все понятно :(
но сюдя по скриншотам движок неплохой.
Выбор бесплатного графического движка11 дек. 200611:11#79
Centurion
>- быстрее, чем Ogre, но все же не так, как хотелось бы.
это как это??? передача геометрии CPU->GPU это быстрее чем VB/IB в видео памяти?
ты исходники смотрел?
как тебе это:
//! draws a vertex primitive list
void CD3D9Driver::drawVertexPrimitiveList(const void* vertices, s32 vertexCount, const u16* indexList, s32 primitiveCount, E_VERTEX_TYPE vType, scene::E_PRIMITIVE_TYPE pType)
....
  if (setRenderStates3DMode())
  {
    switch (pType)
    {
      case scene::EPT_POINTS:
        pID3DDevice->DrawIndexedPrimitiveUP(D3DPT_POINTLIST, 0, vertexCount,
          primitiveCount, indexList, D3DFMT_INDEX16, vertices, stride);
        break;
      case scene::EPT_LINE_STRIP:
        pID3DDevice->DrawIndexedPrimitiveUP(D3DPT_LINESTRIP, 0, vertexCount,
          primitiveCount, indexList, D3DFMT_INDEX16, vertices, stride);
        break;
      case scene::EPT_LINE_LOOP:
      {
        pID3DDevice->DrawIndexedPrimitiveUP(D3DPT_LINESTRIP, 0, vertexCount,
          primitiveCount, indexList, D3DFMT_INDEX16, vertices, stride);
        u16 tmpIndices[] = {0, primitiveCount};
        pID3DDevice->DrawIndexedPrimitiveUP(D3DPT_LINELIST, 0, vertexCount,
          1, tmpIndices, D3DFMT_INDEX16, vertices, stride);
      }
        break;
      case scene::EPT_LINES:
        pID3DDevice->DrawIndexedPrimitiveUP(D3DPT_LINELIST, 0, vertexCount,
          primitiveCount, indexList, D3DFMT_INDEX16, vertices, stride);
        break;
      case scene::EPT_TRIANGLE_STRIP:
        pID3DDevice->DrawIndexedPrimitiveUP(D3DPT_TRIANGLESTRIP, 0, vertexCount,
          primitiveCount, indexList, D3DFMT_INDEX16, vertices, stride);
        break;
      case scene::EPT_TRIANGLE_FAN:
        pID3DDevice->DrawIndexedPrimitiveUP(D3DPT_TRIANGLEFAN, 0, vertexCount,
          primitiveCount, indexList, D3DFMT_INDEX16, vertices, stride);
        break;
      case scene::EPT_TRIANGLES:
        pID3DDevice->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, vertexCount,
          primitiveCount, indexList, D3DFMT_INDEX16, vertices, stride);
        break;
    }
  }
}

//! draws a vertex primitive list
void COpenGLDriver::drawVertexPrimitiveList(const void* vertices, s32 vertexCount, const u16* indexList, s32 primitiveCount, E_VERTEX_TYPE vType, scene::E_PRIMITIVE_TYPE pType)
...
  switch (vType)
  {
    case EVT_STANDARD:
      glVertexPointer(3, GL_FLOAT, sizeof(S3DVertex), &((S3DVertex*)vertices)[0].Pos);
      glNormalPointer(GL_FLOAT, sizeof(S3DVertex), &((S3DVertex*)vertices)[0].Normal);
      glTexCoordPointer(2, GL_FLOAT, sizeof(S3DVertex), &((S3DVertex*)vertices)[0].TCoords);
      break;
    case EVT_2TCOORDS:
      glVertexPointer(3, GL_FLOAT, sizeof(S3DVertex2TCoords), &((S3DVertex2TCoords*)vertices)[0].Pos);
      glNormalPointer(GL_FLOAT, sizeof(S3DVertex2TCoords), &((S3DVertex2TCoords*)vertices)[0].Normal);
      // texture coordinates
      if (MultiTextureExtension)
      {
        extGlClientActiveTextureARB(GL_TEXTURE1_ARB);
        glEnableClientState ( GL_TEXTURE_COORD_ARRAY );
        glTexCoordPointer(2, GL_FLOAT, sizeof(S3DVertex2TCoords), &((S3DVertex2TCoords*)vertices)[0].TCoords2);
        extGlClientActiveTextureARB(GL_TEXTURE0_ARB);
      }
      glTexCoordPointer(2, GL_FLOAT, sizeof(S3DVertex2TCoords), &((S3DVertex2TCoords*)vertices)[0].TCoords);
      break;
    case EVT_TANGENTS:
      glVertexPointer(3, GL_FLOAT, sizeof(S3DVertexTangents), &((S3DVertexTangents*)vertices)[0].Pos);
      glNormalPointer(GL_FLOAT, sizeof(S3DVertexTangents), &((S3DVertexTangents*)vertices)[0].Normal);
      // texture coordinates
      if (MultiTextureExtension)
      {
        extGlClientActiveTextureARB(GL_TEXTURE1_ARB);
        glEnableClientState ( GL_TEXTURE_COORD_ARRAY );
        glTexCoordPointer(3, GL_FLOAT, sizeof(S3DVertexTangents), &((S3DVertexTangents*)vertices)[0].Tangent);

        extGlClientActiveTextureARB(GL_TEXTURE2_ARB);
        glEnableClientState ( GL_TEXTURE_COORD_ARRAY );
        glTexCoordPointer(3, GL_FLOAT, sizeof(S3DVertexTangents), &((S3DVertexTangents*)vertices)[0].Binormal);

        extGlClientActiveTextureARB(GL_TEXTURE0_ARB);
      }
      glTexCoordPointer(2, GL_FLOAT, sizeof(S3DVertexTangents), &((S3DVertexTangents*)vertices)[0].TCoords);
      break;
  }

  switch (pType)
  {
    case scene::EPT_POINTS:
      glDrawArrays(GL_POINTS, 0, primitiveCount);
      break;
    case scene::EPT_LINE_STRIP:
      glDrawElements(GL_LINE_STRIP, primitiveCount+1, GL_UNSIGNED_SHORT, indexList);
      break;
    case scene::EPT_LINE_LOOP:
      glDrawElements(GL_LINE_LOOP, primitiveCount, GL_UNSIGNED_SHORT, indexList);
      break;
    case scene::EPT_LINES:
      glDrawElements(GL_LINES, primitiveCount*2, GL_UNSIGNED_SHORT, indexList);
      break;
    case scene::EPT_TRIANGLE_STRIP:
      glDrawElements(GL_TRIANGLE_STRIP, primitiveCount+2, GL_UNSIGNED_SHORT, indexList);
      break;
    case scene::EPT_TRIANGLE_FAN:
      glDrawElements(GL_TRIANGLE_FAN, primitiveCount+2, GL_UNSIGNED_SHORT, indexList);
      break;
    case scene::EPT_TRIANGLES:
      glDrawElements(GL_TRIANGLES, primitiveCount*3, GL_UNSIGNED_SHORT, indexList);
      break;
    case scene::EPT_QUAD_STRIP:
      glDrawElements(GL_QUAD_STRIP, primitiveCount*2+2, GL_UNSIGNED_SHORT, indexList);
      break;
    case scene::EPT_QUADS:
      glDrawElements(GL_QUADS, primitiveCount*4, GL_UNSIGNED_SHORT, indexList);
      break;
    case scene::EPT_POLYGON:
      glDrawElements(GL_POLYGON, primitiveCount, GL_UNSIGNED_SHORT, indexList);
      break;
  }
...
}
может я чего то не допонимаю, но объясните мне как может DrawIndexedPrimitiveUP для Direct3D и glTexCoordPointer/glVertexPointer/glnormalPointer с установкой указателей на данные из RAM(но не из видео памяти), может быть быстрей использования вершинных и индексных буферов в видео памяти? т.е.  DrawIndexedPrimitive и glBindBufferARB
вот многие говорят про скорость но кто нибудь загружал на
Irrlicht ландшафт 513x513 + 70 анимированных моделей + 700 статических моделей + шейдеры ? и какова будет скорость на таком способе рендеринге геометрии???

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

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