c++ - 为什么 float 是 "unexpected type"

标签 c++ visual-studio opengl glfw glew

我刚开始使用 OpenGL。我在 Visual Studio C++ 社区(在 Windows 10 上运行)中安装了 GLEW 和 GLFW 库。然后我按照教程进行操作,并能够在窗口上绘制一个矩形。我继续按照教程进行操作,直到到达您要添加的部分:

glViewport(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, SCREEN_WIDTH, 0, SCREEN_HEIGHT, 0, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();               

即使在我添加之后,四边形仍在绘制中。在视频中,导师的矩形对于窗口来说太小了,但在我的机器上一切正常,矩形的大小与添加这些行之前的大小相同(即使我的数组使用小数)。 我开始寻找可以使这些行“无效”的东西。过了一会儿,我忽略了他们。

但是在我删除它们并尝试创建另一个四边形之后,编译器说 float 是函数 glVertexPointer 上的“意外类型”。 image

我该如何解决这个问题? 这是源代码:

#include <GL\glew.h>
#include <GLFW\glfw3.h>
#include <iostream>
#include <math.h>
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480


int main(void) {

GLFWwindow *window;


if (!glfwInit()) {
    return -1;
};


window = glfwCreateWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "OGL", NULL, NULL);

if (!window) {
    glfwTerminate();
    return -1;
};

glfwMakeContextCurrent(window);

float vertices[] = {

    -0.5, 0.5, 0.0,
    0.5, 0.5, 0.0,
    -0.5, -0.5, 0.0,
    0.5, -0.5, 0.0

};

while (!glfwWindowShouldClose(window)) {

    glClear(GL_COLOR_BUFFER_BIT);

    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, float, 0, vertices);
    glDrawArrays(GL_QUADS, 0, 4);
    glDisableClientState(GL_VERTEX_ARRAY);


    glfwSwapBuffers(window);
    glfwPollEvents();

}

glfwTerminate();

};

最佳答案

看起来它提示的那行是:

glVertexPointer(3, float, 0, vertices);

我想你的意思是:

glVertexPointer(3, GL_FLOAT, 0, vertices);

这里的区别是float是一个类型,而GL_FLOAT是一个值。您不能将类型作为参数传递给函数。第二个参数必须是 GLenum 类型。

更多信息在这里:glVertexPointer

关于c++ - 为什么 float 是 "unexpected type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34326228/

相关文章:

python - 如何让 VBO 与 Python 和 PyOpenGL 一起工作

c++ - 确定代码段的时间复杂度

c++ - 改变数组

c++ - 如何仅 Hook Windows API 上的键盘焦点

c++ - 行内说明符

.net - Angular 构建未部署到 Visual Studio 2017 中的 azure

.props 文件中的 C# 引用

visual-studio-2010 - 从 TFS 到 Azure 的持续集成与 Visual Studio 部署不一致

c++ - 如何从原始数据加载 devIL 图像

java - Opengl 在窗口中央绘图