Opengl - GLfloat未被识别

Posted

技术标签:

【中文标题】Opengl - GLfloat未被识别【英文标题】:Opengl - GLfloat not being recognized 【发布时间】:2011-06-29 21:13:40 【问题描述】:

这个类声明有一些问题,我试图为 Dijktra 的最短路径算法的 openGL 实现创建节点。 getX()、getY()、getZ() 方法会导致错误:

错误:ISO C++ 禁止声明没有类型的“getX”

我在 ubuntu linux 上用 g++ 编译。命令:g++ -lglut -lGLU -lGL projecttest.c

#include <cstdarg>
#include <cstdio>
#include <GL/glut.h>
#include <GL/glu.h>
#include <cstdlib> 
#include <iostream>
#define kWindowWidth 800
#define kWindowHeight 600 
#define NUM_NODES 3

using namespace std;

class Node 
    private: 
        GLfloat x, y, z;
        int numLinks;
        Node *links[];
    public: 
        Node(GLfloat x, GLfloat y, ...);
        ~Node();
        GLfloat getX();
        GLfloat getY();
        GLfloat getZ() return 0.0f;
 Node;

Node nodes_g[NUM_NODES];

我认为问题出在预处理器宏上。我是 openGL 的新手,对 c++ 有点陌生,所以任何建议都很好,但我真正想知道的是为什么我会收到错误。

【问题讨论】:

为什么要同时包含&lt;cstdio&gt;&lt;iostream&gt;? (这与您的问题无关;我只是好奇。) 【参考方案1】:

你需要

#include <GL/gl.h>

在包含 OpenGL 扩展的标头之前。

【讨论】:

【参考方案2】:

如果你有

#include <GL/glut.h>

那么您应该不需要 GL/gl.h 或 GL/glu.h,尽管您可能必须将 cstdlib 放在 GL/glut.h

【讨论】:

以上是关于Opengl - GLfloat未被识别的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL第十三节:矩阵变换

为啥 GLfloat 需要全局范围?

OpenGL基础

OpenGL线宽

旋转前后的 OpenGL 平移

2D 中的 OpenGL 旋转