Сообщения на форуме пользователя Andrey (38 стр.)
Yet another совет по `Орхитектуре` | 7 дек. 2010 | 17:55 | #112 |
---|
Ataman
>2. При использовании хендлов будет такой же индирекшен, если не хуже.
зачем хэндлы ? лучше индексы массива где данные линейно в памяти лежат.
>2. При использовании хендлов будет такой же индирекшен, если не хуже.
зачем хэндлы ? лучше индексы массива где данные линейно в памяти лежат.
вывод многополигональных объектов | 7 дек. 2010 | 17:18 | #5 |
---|
norm
сколько объектов?
что за API ?
сколько вершинных/индексных буферов в кадре?
сколько dip ?
как рисуешь объекты?
шейдеры есть ?, текстуры?
может тормозит не из-за полигонов.
сколько объектов?
что за API ?
сколько вершинных/индексных буферов в кадре?
сколько dip ?
как рисуешь объекты?
шейдеры есть ?, текстуры?
может тормозит не из-за полигонов.
Yet another совет по `Орхитектуре` | 7 дек. 2010 | 17:16 | #107 |
---|
innuendo
> вас не затруднит описать, когда именно эти кэшпромахи будут влиять заметно ?
Что тут непонятно? Если хранить текстуры как std::vector< Ptr_SomeType<ITexture> > то при установки пару сотен текстур за кадр будут наверняка кешь промахи, то-же самое относится к вершинным и индексным буферам, материалам, шейдерам, рендер таргетам, мешам, шрифтам. Насчет заметно или нет, оно то заметно. Насколько уже неважно, ибо можно обойтись без кешь промахов чуть улучшив код, причем очень малой ценой да и реализация простейшая.
> вас не затруднит описать, как часто такие аллокации должны происходить ?
При загрузке уровня. Под каждый интерфейс текстуры и других ресурсов, вызов аллокации памяти, ну если совсем просто в лоб делать. Можно конечно формат улучшить где известно число текстур материалов и т.д.
> вас не затруднит описать, когда именно эти кэшпромахи будут влиять заметно ?
Что тут непонятно? Если хранить текстуры как std::vector< Ptr_SomeType<ITexture> > то при установки пару сотен текстур за кадр будут наверняка кешь промахи, то-же самое относится к вершинным и индексным буферам, материалам, шейдерам, рендер таргетам, мешам, шрифтам. Насчет заметно или нет, оно то заметно. Насколько уже неважно, ибо можно обойтись без кешь промахов чуть улучшив код, причем очень малой ценой да и реализация простейшая.
> вас не затруднит описать, как часто такие аллокации должны происходить ?
При загрузке уровня. Под каждый интерфейс текстуры и других ресурсов, вызов аллокации памяти, ну если совсем просто в лоб делать. Можно конечно формат улучшить где известно число текстур материалов и т.д.
Yet another совет по `Орхитектуре` | 7 дек. 2010 | 14:01 | #88 |
---|
Z
> - все методъ попадают в дивайс/контекст, отчего он разбухает
Вполне отдельно создать соответствующие реализации что-бы не разбухал код, добавив обертку над int32 которая будет иметь текущий дивайс/контекст как статическую переменную внутри класса, и перенаправив все дивайс/контекст, мы получим все тоже самое с ITexture *.
Зато будет меньше Меньше кешь промахов, меньше аллокаций, меньше abstraction penalty(если есть).
> - все методъ попадают в дивайс/контекст, отчего он разбухает
Вполне отдельно создать соответствующие реализации что-бы не разбухал код, добавив обертку над int32 которая будет иметь текущий дивайс/контекст как статическую переменную внутри класса, и перенаправив все дивайс/контекст, мы получим все тоже самое с ITexture *.
Зато будет меньше Меньше кешь промахов, меньше аллокаций, меньше abstraction penalty(если есть).
Правка: 7 дек. 2010 14:08
Что такое SDL? (комментарии) | 6 дек. 2010 | 14:19 | #1 |
---|
Хорошее сообщество! буду следить за ним.
Как найти нормаль к трем вершинам? | 5 дек. 2010 | 20:57 | #34 |
---|
@!!ex
> производная это тангенс угла наклона касательной.
а может это ее геометрический смысл все таки?
> производная это тангенс угла наклона касательной.
а может это ее геометрический смысл все таки?
Как найти нормаль к трем вершинам? | 5 дек. 2010 | 20:38 | #30 |
---|
@!!ex
> Школьники с трудом понимают что такое вектора...
Куда мир катится!
MarkoPolo
> Как можно вводить производные без пределов??? О___о
Можно можно! производная в точке это число к которому стремится разность (f(x1) - f(x2)) / (x1 - x2) - что-то подобное было в учебники в мои времена. Вроде еще упоминалось |x1 - x0| бесконечна малая величина.
> Школьники с трудом понимают что такое вектора...
Куда мир катится!
MarkoPolo
> Как можно вводить производные без пределов??? О___о
Можно можно! производная в точке это число к которому стремится разность (f(x1) - f(x2)) / (x1 - x2) - что-то подобное было в учебники в мои времена. Вроде еще упоминалось |x1 - x0| бесконечна малая величина.
[D3D9] Лажа с LOD | 4 дек. 2010 | 12:21 | #8 |
---|
DirectXManiac
> Такой вот вопрос, как правильно делается выборка ЛОДа через квадродерево?
делаешь общий вершинный буфер для дерева. Для каждого лода отдельный индексный. Храни в листе дерева смещение в вершинном буфере. При выборе лода ставь это смещении и индексный буфер лода.
по отсечению по фрустуму куча в сети информации, ищи.
> Такой вот вопрос, как правильно делается выборка ЛОДа через квадродерево?
делаешь общий вершинный буфер для дерева. Для каждого лода отдельный индексный. Храни в листе дерева смещение в вершинном буфере. При выборе лода ставь это смещении и индексный буфер лода.
по отсечению по фрустуму куча в сети информации, ищи.
[D3D9] Лажа с LOD | 3 дек. 2010 | 13:41 | #4 |
---|
DirectXManiac
4 параметр ты наверное неправильно считаешь. Туда нужно подавить не число индексов, а число вершин:
"NumVertices - Number of vertices used during this call. The first vertex is located at index: BaseVertexIndex + MinIndex. "
>Вылетает как раз на DrawIndexedPrimitive...
а что в Debug Output пишется?
Индексный буфер 32 битный?
>Вот код по идее правильно, может подскажешь где лажа...
Я не знаю твою реализацию, тебе наверное нужно ставить либо второй либо 3 параметр не ноль в DrawIndexedPrimitive.
почитай подробнее в документации про разные способы рисования и про все параметры.
numIndex = ((sizeOfBlock) / step) * ((sizeOfBlock) / step) * 6;
"NumVertices - Number of vertices used during this call. The first vertex is located at index: BaseVertexIndex + MinIndex. "
>Вылетает как раз на DrawIndexedPrimitive...
а что в Debug Output пишется?
Индексный буфер 32 битный?
>Вот код по идее правильно, может подскажешь где лажа...
Я не знаю твою реализацию, тебе наверное нужно ставить либо второй либо 3 параметр не ноль в DrawIndexedPrimitive.
почитай подробнее в документации про разные способы рисования и про все параметры.
[D3D9] Лажа с LOD | 3 дек. 2010 | 10:55 | #1 |
---|
DirectXManiac
>Там был GeForce 8400, сейчас радеон HD4350 кажись...
Мне кажется неверные параметры для DrawIndexedPrimitive, nVidia эту ошибку пропускает, ATI нет, у самого такое было. Включи DxDEBUG на полный уровень отладки и все будет ясно.
>Там был GeForce 8400, сейчас радеон HD4350 кажись...
Мне кажется неверные параметры для DrawIndexedPrimitive, nVidia эту ошибку пропускает, ATI нет, у самого такое было. Включи DxDEBUG на полный уровень отладки и все будет ясно.
Мультирендинг | 2 дек. 2010 | 17:23 | #15 |
---|
Kavis
спрайты двигаются? В идеале делаешь текстурный атлас, в динамический буфер заливаешь вершины всех спрайтов ставишь текстуру рисуешь 1 вызовом.
спрайты двигаются? В идеале делаешь текстурный атлас, в динамический буфер заливаешь вершины всех спрайтов ставишь текстуру рисуешь 1 вызовом.
Проверка входных значний | 2 дек. 2010 | 10:18 | #22 |
---|
Всегда ставлю assert'ы
на NULL Pointers, проверка диапазонов и других неверных значений.
в идеале еще можно проверять assert для проверки входных указателей c такими функциями IsBadReadPtr/IsBadStringPtr/IsBadWritePtr
на NULL Pointers, проверка диапазонов и других неверных значений.
в идеале еще можно проверять assert для проверки входных указателей c такими функциями IsBadReadPtr/IsBadStringPtr/IsBadWritePtr
Мультирендинг | 1 дек. 2010 | 12:11 | #5 |
---|
@!!ex
> Чем правильней?
зачем матрицы гонять в стек? или CPU заняться нечем больше? Каждый объект свою матрицу хранит. Ее и ставь, в OpenGL 3.0/Direct3D10 и выше убрали этот мусор.
> Чем правильней?
зачем матрицы гонять в стек? или CPU заняться нечем больше? Каждый объект свою матрицу хранит. Ее и ставь, в OpenGL 3.0/Direct3D10 и выше убрали этот мусор.
fread/fwrite - скорость | 1 дек. 2010 | 12:08 | #11 |
---|
lightmap
попробуй Asynchronous I/O через WinAPI
попробуй Asynchronous I/O через WinAPI
Мультирендинг | 1 дек. 2010 | 11:24 | #2 |
---|
Kavis
почитай про
D3DXMatrixOrthoOffCenterLH, IDirect3DDevice9::SetTransform(D3DTS_PROJECTION, IDirect3DDevice9::SetTransform(D3DTS_VIEW
там вижу у тебя glPushMatrix значит еще ID3DXMatrixStack, хотя вполне правильней без него сделать что в OpenGL что в Direct3D.
почитай про
D3DXMatrixOrthoOffCenterLH, IDirect3DDevice9::SetTransform(D3DTS_PROJECTION, IDirect3DDevice9::SetTransform(D3DTS_VIEW
там вижу у тебя glPushMatrix значит еще ID3DXMatrixStack, хотя вполне правильней без него сделать что в OpenGL что в Direct3D.