gpt4 book ai didi

c++ - 如何将 glm::vec4 转换为 GLfloat*?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:18 26 4
gpt4 key购买 nike

我正在尝试传递 glm::vec4<float>gl::ImmediateMode::glColor4fv(GLfloat*) :

std::vector<glm::vec4> colors;
colors.push_back(vec4(1.0f, 0.0f, 0.0f, 1.0f));
glColor4fv(colors[0]);

我收到以下错误消息:

error: not matching function call to 'ImmediateMode::glColor4fv(const vec4&) const'
[...]
candidate is: [...] void gl::ImmediateMode::glColor4fv(GLfloat*) const

很明显,我必须将我的 glm::vec4 转换为 GLfloat 数组。我通读了 GLSLanguage Specifications并且找不到任何直接访问数据的方法。以下尝试有效:

GLfloat *c = new GLfloat[4];
c[0] = colors[0].r;
c[1] = colors[0].g;
c[2] = colors[0].b;
c[3] = colors[0].a;
glColor4fv(c);

但我宁愿使用更优雅的东西。那么有没有一种方法可以访问 glm::vec4 中的数据数组以允许如下访问?

glColor4fv(reinterpret_cast<GLfloat*>(colors[0].data())); 
// .data() would hand me a pointer to the float array of the vec4

最佳答案

你可以使用glm::value_ptr .它适用于 glm::matglm::vec 并且类型安全。

关于c++ - 如何将 glm::vec4<float> 转换为 GLfloat*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21096511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com