首页 > 解决方案 > 如何在 mu C 项目中获取 GL 类型或确保浮点/双精度类型的位数?

问题描述

我想写一个渲染器,我想支持glTF文件格式。但是要这样做,我需要以某种方式定义具有精确位数的类型。为了实现这一点,我想出了两个解决方案:

  1. 我可以自己包含stdint.h和 typedef 整数 gltypes,但是双精度和浮点数呢?如何确保它们具有精确的(64 位和 32 位)位数并且实际上是 IEEE-754 浮点值?如何至少为此执行编译时检查?
  2. 我可以包含定义所有类型的openGL(很可能是gl.h)的某些部分。这部分以另一种方式使我感到困惑。当我查看 gl.h 文件时,typedefs 看起来像这样:
/*
* Datatypes
*/
typedef unsigned int    GLenum;
typedef unsigned char   GLboolean;
typedef unsigned int    GLbitfield;
typedef void        GLvoid;
typedef signed char GLbyte;     /* 1-byte signed */
typedef short       GLshort;    /* 2-byte signed */
typedef int     GLint;      /* 4-byte signed */
typedef unsigned char   GLubyte;    /* 1-byte unsigned */
typedef unsigned short  GLushort;   /* 2-byte unsigned */
typedef unsigned int    GLuint;     /* 4-byte unsigned */
typedef int     GLsizei;    /* 4-byte signed */
typedef float       GLfloat;    /* single precision float */
typedef float       GLclampf;   /* single precision float in [0,1] */
typedef double      GLdouble;   /* double precision float */
typedef double      GLclampd;   /* double precision float in [0,1] */

而且,如您所见,这些 typedef 并不为每种类型使用精确的位数(因为像 int 这样的类型可能有 16位或更多位),尽管docs中有什么内容。我应该走哪条路?

标签: copengltypestypedefgltf

解决方案


推荐阅读