Вопрос был обновлен благодаря комментариям.
Снимок экрана с наложением текстур
Чтобы нарисовать 2 точки с текстурой кисти, используя буфер трафарета, чтобы избежать наложения прозрачности текстур, используется следующий код:
glEnable(GL_STENCIL_TEST.gluint)
glClear(GL_STENCIL_BUFFER_BIT.gluint | GL_DEPTH_BUFFER_BIT.gluint)
glStencilOp(GL_KEEP.gluint, GL_KEEP.gluint, GL_REPLACE.gluint)
glStencilFunc(GL_ALWAYS.gluint, 1, 1)
glStencilMask(1)
glDrawArrays(GL_POINTS.gluint, 0, 1)
glStencilFunc(GL_NOTEQUAL.gluint, 1, 1)
glStencilMask(1)
glDrawArrays(GL_POINTS.gluint, 1, 1)
glDisable(GL_STENCIL_TEST.gluint)
И буфер трафарета работает, однако, каждая точка заполняет полный прямоугольник в буфере трафарета, но изображение текстуры имеет прозрачность. Так, может быть, текстура используется неправильно?
Текстура загружается вот так
glGenTextures(1, &gl_id)
glBindTexture(GL_TEXTURE_2D.gluint, gl_id)
glTexParameteri(GL_TEXTURE_2D.gluint, GL_TEXTURE_MIN_FILTER.gluint, GL_LINEAR)
glTexImage2D(GL_TEXTURE_2D.gluint, 0, GL_RGBA, gl_width.int32, gl_height.int32, 0, GL_RGBA.gluint, GL_UNSIGNED_BYTE.gluint, gl_data)
Смешивание установлено как
glEnable(GL_BLEND.gluint)
glBlendFunc(GL_ONE.gluint, GL_ONE_MINUS_SRC_ALPHA.gluint)
Не могли бы вы посоветовать, где искать, чтобы заполнить 1 с в буфере трафарета точно непрозрачной областью изображения кисти?