LINUX.ORG.RU

NVidia вообще без втыкания факов не работает

 ,


0

4

Дано:

http://i.zlowiki.ru/180404_4a3992fd.png

Рисуется так

glSetPrimitiveRestartIndex(PR) VertexBuffer одинаковый.

Index buffer у всех

0, 1, 2, 3, 4, 5, 6, 7, PR, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, PR

две струкутры RC c полями mFirstIndex, mNumIndices.

1) картинка верна, получена либо:

rc1 = {0,8}, rc2 = {9,11}
glDrawElements(GL_TRIANGLE_STRIP,
                          rc.mNumIndices,
                          GL_UNSIGNED_INT,
                          (GLvoid*)(long)(rc.mFirstIndex*4));

А также

rc1={0,20}

rc1={0,20}
glDrawElementsBaseVertex(GL_TRIANGLE_STRIP,
                           rc.mNumIndices,
                           GL_UNSIGNED_INT,
                           NULL,
                           rc.mFirstIndex);

2)картинка неверна, вторая фигура без первой и последней вершины

rc1 = {0,8}, rc2 = {9,11}
glDrawElementsBaseVertex(GL_TRIANGLE_STRIP,
                           rc.mNumIndices,
                           GL_UNSIGNED_INT,
                           NULL,
                           rc.mFirstIndex);

3) проверяю что вершина всё таки есть:

rc1 = {0,8}, rc2 = {9,11}
glDrawElementsBaseVertex(GL_TRIANGLE_STRIP,
                           rc.mNumIndices,
                           GL_UNSIGNED_INT,
                           NULL,
                           rc.mFirstIndex-1);

но если сделать rc.mNumIndices+2 и rc.mFirstIndex-1 чтоб зацепить эти две пропавшие вершины, то первая вершина появляестя, но вместо последних двух вершин как будто нули. В доке написано, что это говно просто «добавляет baseIndex». И вот нет!

А на AMD всё работает! я там сцену в один выстрел рисовал через glMultiDrawElementsIndirect, всё рисуется,ракеты летают, в ИК канале светятся, погода все дела. Переносим на NVidia. И всё, пустота. ни пикселя ни отрисовано. Ну ладно, подумал, бывает, функция сложная всё таки. А тут опять и уже на такой простой древней функции.

Вот эти вот ихние пионерские поделки из текстолита вы называете графическими процессорам? Я не понимаю, как на этом говне вообще можно рисовать что-то сложнее тухрасера.

☆☆☆

Если запощено скотинкой, где-то точно подвох уровня «дебил».

anonymous
()

Спокойно. Этоно чела стали укорять в том, что 9 из 10 создаваемых им тем - это «почему икры говно, и почему богопододные Ред хат и каноникал обязаны прямо сейчас внедрить вайланд!!1». Вот он и решил разбавлять свои темы, пост я пропаганду лишь одной из 10 тем. Остальные же забивать каким-то мусором.

Игнорируем.

anonymous
()

Чисто предположение: попробовать еще на Mesa LLVM PIPE.

I-Love-Microsoft ★★★★★
()

Я в openGL абсолютный мимокрокодил, но даже мне показалось странным, что ты описываешь видеокарто-специфичную проблему и не указал, каким драйвером пользуешься. Нвидия с блобом и Нвидия с нуво - это некоторая разница. :)

EternalNewbie
()
Ответ на: комментарий от ckotinko

Жизнь дебилов полна страданий.

anonymous
()
Ответ на: комментарий от RazrFalcon

А что не так? 340.106 - последние стабильные дрова для огромного пласта невидий, вышедшие пару месяцев назад...

anonymous
()

Мимокрокодил, но вот это:

When either glDrawElementsBaseVertex, glDrawElementsInstancedBaseVertex or glMultiDrawElementsBaseVertex is used, the primitive restart comparison occurs before the basevertex offset is added to the array index.

учел?

Kosyak ★★★★
()
Ответ на: комментарий от Kosyak

нет. офигеть теперь, кто эти вурдолаки, которые стандарт писали?

зачем? нахера так делать? этот restart обычно делают конским(0x7fffffffu) чтоб точно никогда не напороться.

оооооооо, как же это бесит.

ckotinko ☆☆☆
() автор топика
Ответ на: комментарий от I-Love-Microsoft

нет, на самом деле я сам накосячил, ибо два дня уже не спля пилю код. baseVertex, а я думал как на baseindex.

ckotinko ☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.