我正在尝试使用与使用ImageTargets Sample成功显示的相同图像,事情是我的.h没有“indices”或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;
答案 0 :(得分:1)
您需要做的是使用
传递顶点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 :(得分:1)
试试这个:
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);
答案 2 :(得分:0)
glDrawArrays第三个参数必须有GLsizei类型,所以基本上它是一个整数。在你的代码中,顶点变量是一个指针。不起作用。传递整数。