为什么浮点数是"unexpected type"
Why is a float an "unexpected type"
我从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();
即使在我添加了这些之后,四边形仍然在绘制中。在视频中,导师的矩形对于窗口来说太小了,但在我的机器上一切都很好,矩形的大小与添加这些行之前的大小相同(尽管我的数组使用了小数)。我开始寻找能使这些线条"失效"的东西。过了一会儿我就不理他们了。
但在我删除了它们并试图创建另一个quad之后,编译器说float是函数glVertexPointer上的"意外类型"。图像
我该如何解决这个问题?这是源代码:
#include <GLglew.h>
#include <GLFWglfw3.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
float
是一个表示类型的保留字,不能作为参数传递。您需要GL_FLOAT
。看见https://www.opengl.org/sdk/docs/man2/xhtml/glVertexPointer.xml
相关文章:
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 控制到达非空函数clang(-Wreturn-type)的末尾
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 将系数存储在头文件的数组中("does not name a type"错误)
- 尝试打开 ifstream 时出现"Incomplete type"错误
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 在"结构提升::enable_if<提升::is_pod<T>,无效>"中没有名为"type"的类型
- "Missing type specifier - int assumed"无法通过向主函数添加"return 0"来解决
- OpenCV CV_16F type
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- C++ "错误:在'类 std::result_of< ... >"中没有名为'type'的类型"
- 将内存分配返回值强制转换为 TYPE 数组
- C++ 一个lambda浅拷贝const Type&如果它被赋予一个命名捕获,如[copy=val](){}?
- reference_wrapper导致"incomplete type is not allowed"
- 在 armhf 上使用 cmake 在 qt 上的编译问题 "Syntax error: wird unexpected (expecting " ) " "
- 使用变换翻转地图,接收错误"type int unexpected"
- 为什么浮点数是"unexpected type"