c++ - 将 GL_UNSIGNED_BYTE 上传到 GL_FLOAT 纹理
问题描述
我有一个正常创建的 OpenGL 纹理,使用GL_FLOAT
它的数据类型:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, Dims.x, Dims.y, 0, GL_RGBA, GL_FLOAT, Data);
(作为数组Data
正确发送。)float
然后我必须使用无符号字节形式的数据更新纹理。glTexSubImage2D
使用 using更新纹理是否合法GL_UNSIGNED_BYTE
?
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, Dims.x, Dims.y, GL_RGBA, GL_UNSIGNED_BYTE, NewData);
(NewData
发送为unsigned char*
。)
该文档似乎没有提及在这些函数之间使用不同数据类型的任何内容。是否可以以这种方式更新纹理,或者纹理数据是否必须转换为float*
?
解决方案
推荐阅读
- c++ - Move constructor for a list of Person objects
- r - 如何将 SpatialPointDataFrame 转换为 r 中的普通数据帧?
- node.js - 我如何获得所有命名空间的名称(@kubernetes/client-node)
- python - 有没有办法检测时间序列数据中的阶梯状形状?
- linux - 在 Linux 下,有没有办法从长时间运行的程序中捕获后续的 stdout 和 stderror ?
- in-operator - 编写 SQL 运算符语法的步骤
- react-native - 通过父类中的按钮重置子类和父类的所有状态 - React Native
- java - Java泛型方法:创建必要类型的实体
- angular - 使用 Angular 创建动态表
- flutter - 提供商试图更新我的计数我何时会收到通知?