我可以使用矢量(OpenGL)构建网格吗

多米·迪东戈

我试图通过传递带有向量的信息来构建网格。我认为那一定是一样的。但这是行不通的。此向量中的实际信息必须正确,因此我可以确定问题是建立实际的bufferData。

有人暗示那里出了什么问题吗?还是我可能以更好的方式做到这一点?

void MeshBuilder::buildMesh(std::vector<Vertex> vert, std::vector<int> index){
Vertex vertex;
//Vertex Array Object: Binds Buffer Obj
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);

std::vector<GLfloat> verticies;
for (int i = 0; i < vert.size(); i++) {
    verticies.push_back(vert[i].getPosition().x);
    verticies.push_back(vert[i].getPosition().y);
    verticies.push_back(vert[i].getPosition().z);
    verticies.push_back(vert[i].getNormals().x);
    verticies.push_back(vert[i].getNormals().y);
    verticies.push_back(vert[i].getNormals().z);
    verticies.push_back(vert[i].getTexture().x);
    verticies.push_back(vert[i].getTexture().y);
}

std::vector<int> indicies;
for (int i = 0 ; i < index.size(); i++) {
    indicies.push_back(i);
}

//Vertex Buffer Object
GLuint vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, verticies.size()*sizeof(GLfloat), &verticies, GL_STATIC_DRAW);
//Attributes
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, vertex.SIZE*4, (GLvoid*)0);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, vertex.SIZE*4, (GLvoid*)12);
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, vertex.SIZE*4, (GLvoid*)24);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2);

glBindVertexArray(0);

//Element Buffer Object
glGenBuffers(1, &ebo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indicies.size()*sizeof(int), &indicies, GL_STATIC_DRAW);

std::cout << "Mesh buildet..." << std::endl;
}
弗朗西斯·库格勒

在您的方法声明和定义中,尝试将其从void MeshBuilder::buildMesh(std::vector<Vertex> vert, std::vector<int> index);更改void MeshBuilder::buildMesh(std::vector<Vertex>& vert, std::vector<int>& index)为通过引用传递,而不是进行复制;这将有助于加快速度。

我能看到的可能导致问题的唯一另一件事是,在定义索引之前要停止顶点数组。尝试将您glBindVertexArray(0);//Element Buffer Object代码移到这三行代码之后的代码之前。看看这是否有所不同。

此外,请确保在此函数结束之前或在调用此函数之后执行以下操作:

  • 禁用属性指针
  • 下面的下两个必须在取消绑定顶点数组缓冲区之后:
    • 停止缓冲区索引- glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 );
    • 停止缓冲区- glBindBuffer( GL_ARRAY_BUFFER, 0 );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有人可以向我解释使用JS / jQuery创建网格的此功能吗?

来自分类Dev

我可以使用.NET Core构建UWP吗?

来自分类Dev

我可以使用类型列表构建抽象访客吗?

来自分类Dev

我可以使用LLVM jit生成AVX矢量化代码吗?

来自分类Dev

是否可以使用CSS在IE中创建网格图像或错误图像?

来自分类Dev

我可以使用“每晚构建”功能运行自定义的Circle CI构建脚本吗?

来自分类Dev

我可以使用服务网格进行事件驱动的消息传递吗?

来自分类Dev

java - 我可以使用Java中每个元素的代码创建动态网格视图吗?

来自分类Dev

我可以使用react native使用Django rest api构建移动应用程序吗?

来自分类Dev

没有mapbox GL的矢量图块,我们可以使用传单1 Beta吗?

来自分类Dev

Opengl:我们仍然可以使用GL_QUADS吗?

来自分类Dev

我可以使用OpenGL 1制作Kivy应用程序吗?

来自分类Dev

我可以使用Bamboo Rest-API下载Bamboo构建的工件吗?

来自分类Dev

我可以使用roslyn和新的.net项目格式在构建时创建类吗?

来自分类Dev

我可以使用Boost 1.55构建双向协程吗?

来自分类Dev

我可以使用PhoneGap免费构建多个关闭的应用程序吗?

来自分类Dev

我可以使用LLVM加速构建并减少GCC编译时间吗?

来自分类Dev

我可以使用预提交钩子在Java项目上调用Maven构建吗?

来自分类Dev

我可以使用Clojure构建移动聊天应用程序吗?

来自分类Dev

我们可以使用Kotlin构建全栈Web应用程序吗?

来自分类Dev

我可以使用Flutter构建路线记录应用程序吗?

来自分类Dev

我可以使用ssh发送用于Android建筑物的构建命令吗?

来自分类Dev

我可以使用类型列表来构建抽象访问者吗?

来自分类Dev

我可以使用SQL从其他Excel文件构建Excel数据表吗?

来自分类Dev

我可以使用step()从任何插件创建任何构建步骤吗?

来自分类Dev

我可以使用 angular 版本 1 构建带有离子的应用程序吗

来自分类Dev

我可以使用调试符号和发布标志进行货物构建吗?

来自分类Dev

我可以使用Debian软件包构建环境来构建Ubuntu软件包吗?

来自分类Dev

我可以使用OpenCV 3.0.0的预构建库仅构建Opencv_contrib额外模块吗?

Related 相关文章

  1. 1

    有人可以向我解释使用JS / jQuery创建网格的此功能吗?

  2. 2

    我可以使用.NET Core构建UWP吗?

  3. 3

    我可以使用类型列表构建抽象访客吗?

  4. 4

    我可以使用LLVM jit生成AVX矢量化代码吗?

  5. 5

    是否可以使用CSS在IE中创建网格图像或错误图像?

  6. 6

    我可以使用“每晚构建”功能运行自定义的Circle CI构建脚本吗?

  7. 7

    我可以使用服务网格进行事件驱动的消息传递吗?

  8. 8

    java - 我可以使用Java中每个元素的代码创建动态网格视图吗?

  9. 9

    我可以使用react native使用Django rest api构建移动应用程序吗?

  10. 10

    没有mapbox GL的矢量图块,我们可以使用传单1 Beta吗?

  11. 11

    Opengl:我们仍然可以使用GL_QUADS吗?

  12. 12

    我可以使用OpenGL 1制作Kivy应用程序吗?

  13. 13

    我可以使用Bamboo Rest-API下载Bamboo构建的工件吗?

  14. 14

    我可以使用roslyn和新的.net项目格式在构建时创建类吗?

  15. 15

    我可以使用Boost 1.55构建双向协程吗?

  16. 16

    我可以使用PhoneGap免费构建多个关闭的应用程序吗?

  17. 17

    我可以使用LLVM加速构建并减少GCC编译时间吗?

  18. 18

    我可以使用预提交钩子在Java项目上调用Maven构建吗?

  19. 19

    我可以使用Clojure构建移动聊天应用程序吗?

  20. 20

    我们可以使用Kotlin构建全栈Web应用程序吗?

  21. 21

    我可以使用Flutter构建路线记录应用程序吗?

  22. 22

    我可以使用ssh发送用于Android建筑物的构建命令吗?

  23. 23

    我可以使用类型列表来构建抽象访问者吗?

  24. 24

    我可以使用SQL从其他Excel文件构建Excel数据表吗?

  25. 25

    我可以使用step()从任何插件创建任何构建步骤吗?

  26. 26

    我可以使用 angular 版本 1 构建带有离子的应用程序吗

  27. 27

    我可以使用调试符号和发布标志进行货物构建吗?

  28. 28

    我可以使用Debian软件包构建环境来构建Ubuntu软件包吗?

  29. 29

    我可以使用OpenCV 3.0.0的预构建库仅构建Opencv_contrib额外模块吗?

热门标签

归档