【问题标题】:Vec3 in OpenGl/Glew/GLSL is not defined未定义 OpenGl/Glew/GLSL 中的 Vec3
【发布时间】:2016-03-10 12:11:29
【问题描述】:

我刚开始使用简单的 OpenGL/GLSL 编程并遇到了错误。我想为我使用的数据构建一个结构。我想将它的一部分保存在 vec3 或 vec4 等中。但我总是得到错误 vec3/vec2 未定义。 我在这里想念什么?帮助将不胜感激。 以下是我得到错误的一些例子。

#include <Windows.h>
#include <GL\glew.h>
#include <GL\freeglut.h>
#include <iostream>
#include <fstream>


using namespace std;
int windowWidth = 1280;
int windowHeight = 800;
int windowStartX = 100;
int windowStartY = 25;

struct HairData {
    vec3 position;
    vec2 uv;
};

void render()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Left window
glViewport(0,0,windowWidth/2,windowHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, windowWidth / 2, windowHeight, 0);
glScissor(0, 0, windowWidth / 2, windowHeight);

// Right window
glViewport(windowWidth / 2, 0, windowWidth, windowHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (GLfloat)(windowWidth) / (GLfloat)(windowHeight), 0.1f, 500.0);

glutSwapBuffers();
}

int main(int argc, char* argv[]) {
    glutInit(&argc, argv);
    glutInitWindowPosition(windowStartX, windowStartY);
    glutInitWindowSize(windowWidth, windowHeight);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Simple Hair Program");
    glEnable(GL_SCISSOR_TEST);
    glutDisplayFunc(render);
    glutMainLoop();
return 0;
}

`

【问题讨论】:

  • 对于 OpenGL 或 GLEW 和 GLUT 库没有这样的“标准”类型。您需要使用另一个库,例如 GLM 或自己定义这些类型及其操作。

标签: c++ opengl glsl freeglut


【解决方案1】:

vec3 仅在 GLSL 中可用,即在着色器中,而不是在 CPU 代码中。

要替换它,您可以定义自己的数据类型或使用像 GLM 这样定义类似数据类型的库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2017-05-16
    • 1970-01-01
    • 2015-06-10
    • 2012-02-29
    • 2013-12-27
    • 2021-12-23
    相关资源
    最近更新 更多