Разница между glBindBuffer и glBindBufferBase

Вот решение, которое я нашел. Это выглядит не очень элегантно:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<% pageContext.setAttribute("newLineChar", "\n"); %>

${fn:replace(item.comments, newLineChar, "; ")}
1
задан Rabbid76 2 March 2019 в 07:47
поделиться

1 ответ

Они не используются для той же цели.

glBindBuffer используется для привязки буфера к определенной цели, так что все операции, которые изменяют эту цель, впоследствии сопоставляются с этим буфером.

glBindBufferBase используется для совершенно другой цели, он используется для привязки буфера к конкретной точке привязки в индексированном массиве (когда данные не предполагается напрямую изменять, а использовать). Хотя это может показаться запутанным, это действительно легко увидеть. Предположим, что вы хотите передать унифицированный блок в свой шейдер, тогда у вас есть таблица, которая отображает именованные буферы на конкретные индексы в массиве, которые затем отображаются на привязки в шейдере, как показано на следующем рисунке:

[116 ] enter image description here

, поэтому glBindBufferBase создает стрелки справа, в которых вы указываете индекс, а glBindBuffer просто привязывает буфер к определенной цели. [1112 ]

Затем вы можете использовать glGetUniformBlockIndex для получения правильного индекса в шейдере, который затем связывается с точкой привязки (стрелки влево) через glUniformBlockBinding.

0
ответ дан Jack 2 March 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: