【问题标题】:Can't draw loaded models in OpenGL ES 1.x with C++无法使用 C++ 在 OpenGL ES 1.x 中绘制加载的模型
【发布时间】:2012-01-17 15:08:11
【问题描述】:

我加载 obj 模型并尝试使用 Android NDK 使用 OpenGL ES 渲染它们:

class ObjModel{
public:
    ObjModel();
    ~ObjModel();

    int numVertex, numNormal,numTexCoord, numTriange;

    float *vertexArray;
    float *normalArray;
    float *texCoordArray;
    unsigned short *indexArray;

    void loadModel(string fileName);
};

model->loadModel(filename);

glVertexPointer(3, GL_FLOAT, 0,  &(model->vertexArray[0]));
glNormalPointer(GL_FLOAT, 0,  &(model->normalArray[0]));
glDrawElements(GL_TRIANGLES, model->numTriange, GL_UNSIGNED_SHORT,
                 &(model->indexArray[0]));

模型没有完全渲染,我只看到了一部分。 我检查了数组中的数据,它们被正确解析。我认为唯一的问题可能是传递参数。我做得对吗?

【问题讨论】:

    标签: android c++ opengl-es qcar-sdk


    【解决方案1】:

    希望这会有所帮助!我认为您只是缺少数字 3!

    glDrawElements(GL_TRIANGLES, 3 * model->numTriange, GL_UNSIGNED_SHORT,
                 &(model->indexArray[0]));
    

    【讨论】:

    • 谢谢,是问题所在!我将参数与要绘制的三角形数量混淆了。
    • 这是缓冲区中的索引数!享受吧!
    • @Mighter 当然,如果这个答案可以解决您的问题,那么接受就是正确的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多