пока я могу нарисовать белый треугольник на черном фоне. без применения какой-либо проекции/усеченной пирамиды или матрицы камеры/вида. Конечно, это приводит к тому, что треугольник масштабируется по ширине экрана.
однако, как только я применяю преобразование камеры и проекции, треугольник исчезает со сцены, и остается только появляется цвет фона.
Это соответствующий код:
Код: Выделить всё
float triangleCoords[] = { // in counterclockwise order:
0, 1, 0, // top
-1, 0, 0, // bottom left
1, 0, 0 // bottom right
};
std::string vertexShaderCode =
"attribute vec4 vPosition; "
"uniform mat4 uMVPMatrix; "
"void main() {"
" gl_Position = uMVPMatrix*vPosition;"
"}";
std::string fragmentShaderCode =
"precision mediump float;"
"uniform vec4 vColor;"
"void main() {"
" gl_FragColor = vColor;"
"}";
mvpMatrix=glm::translate(mvpMatrix,vec3(0,-0.5,0));
mvpMatrix*=glm::lookAt(vec3(0,0,-3),vec3(0,0,0),vec3(0,1,0));
mvpMatrix*=glm::frustum(-1.0f,1.0f,-ratio,ratio,3.0f,7.0f);
Я пробовал это разными способами, например, умножая LookAt перед усеченным конусом и изменяя ближние дальние значения для усеченного конуса и т. д. и т. д.
Также я пробовал изменить со- по оси ординат, чтобы увидеть, не обрезалось ли оно, но безрезультатно.
Однако перевод 0,5 единиц работает правильно, если не применяются LookAt и Frustum, что означает, что переход значений из матрица для шейдера правильная.
Помогите мне с этим
Подробнее здесь: https://stackoverflow.com/questions/280 ... ot-working
Мобильная версия