Новое для Opengl и GLSL.Фрагмент текстуры вершин (текстура, читаемая в вершинном шейдере)
Я использую OpenGL ES 3.0 и моей GLSL версии #Version 300 эс.
Я хочу получить пиксель (данные ARGB) в каждой позиции в моем вершинном шейдере (выбор текстуры вершин). я подтвердил, что мой Android-планшет поддерживает выборку текстур вершин.
Теперь я прохожу в текстуры (изображения) и координаты текстуры в вершинном шейдере и выполнить
GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
Является ли это правильный путь или я должен использовать GL_POINTS. Если я использую GL_POINTS, как передать текстуру cooordinate?
Вы могли бы предоставить образцы/примеры кода, которые читают полный пиксель (ARGB) в вершинном шейдере.
прикрепление мой вершинные шейдеры
uniform sampler2D sTexture;
in vec4 aTextureCoord;
out vec3 colorFactor;
vec2 vTextureCoord;
vec4 tex;
void main()
{
vTextureCoord = aTextureCoord.xy;
tex = texture(sTexture,vTextureCoord);
float luminance = 0.299 * tex.r + 0.587 * tex.g + 0.114 * tex.b;
colorFactor = vec3(1.0, 1.0, 1.0);
gl_Position = vec4(-1.0 + (luminance * 0.00784313725), 0.0, 0.0, 1.0);
gl_PointSize = 1.0;
};
Мои координаты текстуры пройденные {0.f, 1.f}
{1.f, 1.f} {0.f, 0.f } {1.f, 0.f}
, и затенение инициируется
GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
Я проверил его с помощью glGet и получил 16 для GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS –
«Реализации могут объявлять единицы нулевой вершинной текстуры», [Таблица 6.31 (страница 274)] (https://www.khronos.org/registry/gles/specs/ 3.0/es_spec_3.0.4.pdf) говорит, что минимальное значение для 'GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS' равно 16, а не нулю. Возможно, вы думаете о ES 2.0, где минимум равен нулю ([Таблица 6.20, стр. 154] (https://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.25.pdf)). – genpfault
Спасибо за ответ :) моей цель состоит в вычислении светового значения гистограммы от цветовой информации в вершинном шейдере так, цвета = текстура (texID, texcoordinate) он будет возвращать каждый пикселы в вершинном шейдере? Чтобы получить каждый пиксел, мне нужно использовать GL_POINTS? Я новичок в этих вещах @Tommy –