Как я могу использовать glDrawArrays (), вставленный из glDrawElements () в FrameMarkers из примеров Qualcomm - PullRequest
0 голосов
/ 24 февраля 2012

Я пытаюсь использовать то же изображение, которое я успешно показываю с помощью примера ImageTargets, дело в том, что мой .h не имеет "индексов" или константы типа NUM_C_OBJECT_INDEX.

Теперь, когдаобычно это не проблема, так как я просто изменил бы этот код:

glDrawElements(GL_TRIANGLES, numIndices, GL_UNSIGNED_SHORT, indices);

для этого:

glDrawArrays(GL_TRIANGLES, 0, vertex);

, где vertex = myObjectVertices.Дело в том, что когда я пытаюсь сделать это, я получаю эту ошибку:

Нет соответствующей функции для вызова 'glDrawArrays'

, если я не использую:

glDrawArrays(GL_TRIANGLES, 0, myObjectVertices); //so not the variable but the object itself.

проблема здесь в том, что, поскольку в FrameMarkers я могу использовать несколько рендеров, мне нужно иметь возможность назначить переменную, чтобы она разграничивала соответствующее изображение, но я не могу понять, как исправить эту ошибку, кроме использованиясам объект, который не является полезным.Есть идеи?

Мои переменные:

const GLvoid* vertices = 0;
            const GLvoid* vertex = 0;
            const GLvoid* normals = 0;
            const GLvoid* indices = 0;
            const GLvoid* texCoords = 0;
            int numIndices = 0;

пример:

case 1:
                    vertices = &CobjectVertices[0];
                    normals = &CobjectNormals[0];
                    indices = &CobjectIndices[0];
                    texCoords = &CobjectTexCoords[0];
                    numIndices = NUM_C_OBJECT_INDEX;
                    break;
                case 2:
                    vertices = &myObjectVerts[0];
                    vertex = &myObjectVerts;
                    normals = &myObjectNormals[0];
                    texCoords = &myObjectTexCoords[0];
                    break;

Ответы [ 3 ]

1 голос
/ 08 апреля 2012

Что вам нужно сделать, это передать вершины с помощью

glVertexPointer( 3, GL_FLOAT, 0, vertex ); // vertex is pointer to vertices array

, а затем вызвать

glDrawArrays(GL_TRIANGLES, 0, vertexCount); // vertexCount is the number of vertices you have in your array
1 голос
/ 14 сентября 2012

Попробуйте это:

switch (marker->getMarkerId()) {
    case 0:
        //vertices = &QobjectVertices[0];
        vertices = &1Verts[0];
        normals = 0;
        // indices = &QobjectIndices[0];
        texCoords = &1TexCoords[0];
        numIndices = NUM_1_INDEX;
        quantVertices= 1NumVerts; //Vertices do Número 1
        break;
    case 1:
        //vertices = &CobjectVertices[0];
        vertices = &2Verts[0];
        normals = 0;
        //indices = &CobjectIndices[0];
        texCoords = &2TexCoords[0];
        numIndices = NUM_2_INDEX;
        quantVertices= 2NumVerts;  //Vertices do Número 2
     break;
}

glDrawArrays(GL_TRIANGLES, 0,quantVertices);
0 голосов
/ 25 февраля 2012

glDrawArrays третий аргумент должен иметь тип GLsizei, поэтому в основном это целое число. В вашем коде переменная вершины является указателем. Она не будет работать. Передайте целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...