Android OpenGL ES 2.0 проекция glm не работаетAndroid

Форум для тех, кто программирует под Android
Anonymous
Android OpenGL ES 2.0 проекция glm не работает

Сообщение Anonymous »

Я использую c/c++ (NDK) для Android для программирования в opengl 2.0. Поскольку официальной библиотеки C++ для Android не существует, я использую библиотеку GLM!

пока я могу нарисовать белый треугольник на черном фоне. без применения какой-либо проекции/усеченной пирамиды или матрицы камеры/вида. Конечно, это приводит к тому, что треугольник масштабируется по ширине экрана.

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

Это соответствующий код:

Код: Выделить всё

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);
где vec3 — это «typedef glm::vec3», а mvpMatrix — «glm::mat4x4»
Я пробовал это разными способами, например, умножая LookAt перед усеченным конусом и изменяя ближние дальние значения для усеченного конуса и т. д. и т. д.

Также я пробовал изменить со- по оси ординат, чтобы увидеть, не обрезалось ли оно, но безрезультатно.

Однако перевод 0,5 единиц работает правильно, если не применяются LookAt и Frustum, что означает, что переход значений из матрица для шейдера правильная.

Помогите мне с этим

Подробнее здесь: https://stackoverflow.com/questions/280 ... ot-working

Вернуться в «Android»