Спасибо rotoglup, ваши посты очень помогли. Последнее изменение, которое вы сделали о размере модели, было именно тем, что я в итоге реализовал. Я пришел к выводу, что речь идет о определении границ модели в каждом направлении и получении вершин, попадающих в диапазон [0-1] УФ-шнуров. Поэтому я написал метод, чтобы найти AABB или каждую модель, а затем создал правильную матрицу масштаба и перевода, чтобы при умножении вершины на матрицу значения вдоль каждой плоскости падали между 0-1. Передача матрицы вниз как униформа и текстуры отображаются. Еще раз спасибо!

ался в течение нескольких часов реализовать замену GLSL для glTexGen с GL_OBJECT_LINEAR. Для OpenGL ES 2.0. В Ogl GLSL есть gl_TextureMatrix, которая делает это проще, но недоступна в OpenGL ES 2.0 / OpenGL ES Shader Language 1.0

Несколько сайтов упомянули, что это должно быть "легко" сделать в вершинном шейдере GLSL. Но я просто не могу заставить его работать.

Я догадываюсь, что я неправильно настраиваю самолеты или что-то упускаю в моем понимании.

Я порылась в Интернете. Но большинство сайтов говорят о проектируемых текстурах, я просто хочу создать ультрафиолетовые лучи на основе плоской проекции. Модели строятся в Maya, имеют полигоны по 50 тыс., А разработчик моделей использует картографирование, но Maya не будет экспортировать UV. Я пытаюсь понять это.

Я посмотрел информацию о man-странице glTexGen:

g = p1xo + p2yo + p3zo + p4wo

Что такое г? Является ли g значением s в вызове texture2d?

Я посмотрел на сайте:

http://www.opengl.org/wiki/Mathematics_of_glTexGen

Другой размер объясняет ту же функцию:

Координата = P1 * X + P2 * Y + P3 * Z + P4 * W

Я не понимаю, как координата (UV vec2 в моем уме) равна точечному произведению (скалярное значение)? Та же проблема, что у меня была раньше с "g".

Что я должен установить самолет? В моем коде opengl c ++ 3.0 я установил его на [0, 0, 1, 0] (в основном это единица z), и glTexGen прекрасно работает.

Я все еще что-то упускаю.

Мой вершинный шейдер выглядит в основном так: WVPMatrix = World View Project Matrix. ПОЛОЖЕНИЕ - позиция вершины модели.

varying vec4 kOutBaseTCoord;
void main()
{
    gl_Position = WVPMatrix * vec4(POSITION, 1.0);

    vec4 sPlane = vec4(1.0, 0.0, 0.0, 0.0);
    vec4 tPlane = vec4(0.0, 1.0, 0.0, 0.0);
    vec4 rPlane = vec4(0.0, 0.0, 0.0, 0.0);
    vec4 qPlane = vec4(0.0, 0.0, 0.0, 0.0);

    kOutBaseTCoord.s = dot(vec4(POSITION, 1.0), sPlane);
    kOutBaseTCoord.t = dot(vec4(POSITION, 1.0), tPlane);
    //kOutBaseTCoord.r = dot(vec4(POSITION, 1.0), rPlane);
    //kOutBaseTCoord.q = dot(vec4(POSITION, 1.0), qPlane);

}

Фрагмент шейдера

precision mediump float;
uniform sampler2D BaseSampler;
varying mediump vec4 kOutBaseTCoord;
void main()
{

    //gl_FragColor = vec4(kOutBaseTCoord.st, 0.0, 1.0);
    gl_FragColor = texture2D(BaseSampler, kOutBaseTCoord.st);
}

Я пробовал texture2DProj во фраг шейдере

Вот некоторые другие ссылки, которые я посмотрел

http://www.gamedev.net/topic/407961-texgen-not-working-with-glsl-with-fixed-pipeline-is-ok/

Заранее спасибо.

Ответы на вопрос(0)

Ваш ответ на вопрос