我可以使用具有所有属性的顶点缓冲区的单个顶点索引(位置,法线,texCoord)

时间:2017-06-17 12:23:02

标签: c++ 3d collada vulkan

我使用COLLADA加载3D资源,我想将位置,法线和texcoord数据交织成一个struct数组并使用顶点索引绘制对象,但顶点属性具有不同的数量(例如:position有24个值,法线有36个值。等等,我能够通过将属性重新排列到预定义的struct数组中来加载模型,但是这次我必须在不使用索引缓冲区的情况下加载模型,是否可以将这些属性交织成一个数组并使用索引缓冲区?什么是加载模型的最佳方法,可以获得最佳的性能提升。

我的结构看起来像这样

struct vertexAttribs
{
    glm::vec3 position;
    glm::vec3 normals;
    glm::vec2 texCoord;
}

1 个答案:

答案 0 :(得分:0)

使用索引缓冲区是一个全有或全无的交易。所有属性都使用索引缓冲区,或者没有属性使用它。

对于其中的每个属性,您将拥有VkVertexInputBindingDescription stride = sizeof(vertexAttribs)VkVertexInputAttributeDescription个匹配的offsetformat s binding VkVertexInputBindingDescription 1}}作为// build notification String content = edtEditText.getText().toString(); Notification n = new Notification.Builder(this) .setContentTitle("Title That you want") .setContentText(content).build(); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.notify(0, n);