Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenGl多维数据集不是';t显示_C++_Opengl - Fatal编程技术网

C++ OpenGl多维数据集不是';t显示

C++ OpenGl多维数据集不是';t显示,c++,opengl,C++,Opengl,嗨,伙计们,我是opengl世界的新手,所以这就像是一个星期 我试图理解opengl是如何工作的。所以我写下了我的密码 使用不同的例子,我编译它没有问题。 但是立方体没有出现,我也不知道为什么。谁能向我解释一下我的错误吗? 下面是代码: #define GL_GLEXT_PROTOTYPES #include <GL/glew.h> #include <iostream> #include <GL/gl.h> #include <GL/freeglut

嗨,伙计们,我是opengl世界的新手,所以这就像是一个星期 我试图理解opengl是如何工作的。所以我写下了我的密码 使用不同的例子,我编译它没有问题。 但是立方体没有出现,我也不知道为什么。谁能向我解释一下我的错误吗? 下面是代码:

#define GL_GLEXT_PROTOTYPES

#include <GL/glew.h>
#include <iostream>
#include <GL/gl.h>
#include <GL/freeglut.h>



using namespace std;

void display(void);

int main(int argc, char ** argv)
{

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA);
    glutInitWindowSize(512, 512);

    glutCreateWindow(argv[0]);


    glutInitContextVersion(4, 5);
    glutInitContextProfile(GLUT_CORE_PROFILE);
    cout<< glGetString(GL_VERSION)<< endl;
    if (glewInit()) {
        cerr << "Unable to initialize GLEW ... exiting" << endl;
        exit(EXIT_FAILURE);
    }   


    GLuint i;
    GLuint vertex[1];

    glGenVertexArrays(3*12,vertex);
    glBindVertexArray(vertex[0]);
    static const GLfloat fl[] = {
    0.583f,  0.771f,  0.014f,
    0.609f,  0.115f,  0.436f,
    0.327f,  0.483f,  0.844f,
    0.822f,  0.569f,  0.201f,
    0.435f,  0.602f,  0.223f,
    0.310f,  0.747f,  0.185f,
    0.597f,  0.770f,  0.761f,
    0.559f,  0.436f,  0.730f,
    0.359f,  0.583f,  0.152f,
    0.483f,  0.596f,  0.789f,
    0.559f,  0.861f,  0.639f,
    0.195f,  0.548f,  0.859f,
    0.014f,  0.184f,  0.576f,
    0.771f,  0.328f,  0.970f,
    0.406f,  0.615f,  0.116f,
    0.676f,  0.977f,  0.133f,
    0.971f,  0.572f,  0.833f,
    0.140f,  0.616f,  0.489f,
    0.997f,  0.513f,  0.064f,
    0.945f,  0.719f,  0.592f,
    0.543f,  0.021f,  0.978f,
    0.279f,  0.317f,  0.505f,
    0.167f,  0.620f,  0.077f,
    0.347f,  0.857f,  0.137f,
    0.055f,  0.953f,  0.042f,
    0.714f,  0.505f,  0.345f,
    0.783f,  0.290f,  0.734f,
    0.722f,  0.645f,  0.174f,
    0.302f,  0.455f,  0.848f,
    0.225f,  0.587f,  0.040f,
    0.517f,  0.713f,  0.338f,
    0.053f,  0.959f,  0.120f,
    0.393f,  0.621f,  0.362f,
    0.673f,  0.211f,  0.457f,
    0.820f,  0.883f,  0.371f,
    0.982f,  0.099f,  0.879f
};

    glGenBuffers(1,&i);
    glBindBuffer(GL_ARRAY_BUFFER,i);
    glBufferData(GL_ARRAY_BUFFER,sizeof(fl),fl,GL_STATIC_DRAW);
    glEnableVertexAttribArray(1);

    const GLchar* vvs="#version 450\n"
    "in vec3 vp;\n"
    "void main() {\n"
    "  gl_Position = vec4(vp, 1.0);\n"
    "}\n";
    const GLchar* gg=
    "#version 450 core"
    "out vec4 fColor;"
    "void"
    "main()"
    "{"
    "fColor = vec4(0.0, 0.0, 1.0, 1.0);"
    "}";

    GLint sh= glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(sh,1,&vvs,NULL);
    glShaderSource(sh,1,&gg,NULL);
    glCompileShader(sh);

    GLint program=glCreateProgram();
    glAttachShader(program,sh);
    glLinkProgram(program);

        glUseProgram(program);
glVertexAttribPointer(
    1,                                // attribute. No particular reason for 1, but must match the layout in the shader.
    3,                                // size
    GL_FLOAT,                         // type
    GL_FALSE,                         // normalized?
    0,                                // stride
    (void*)0                          // array buffer offset
);

    glDisableVertexAttribArray(1);
    glutDisplayFunc(display);
    glutMainLoop();
}


void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);



    glDrawArrays(GL_TRIANGLES,0,12*3);
    glutSwapBuffers();
    glFlush();
}
#定义GL_GLEXT_原型
#包括
#包括
#包括
#包括
使用名称空间std;
作废显示(作废);
int main(int argc,字符**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA);
glutInitWindowSize(512、512);
glutCreateWindow(argv[0]);
glutInitContextVersion(4,5);
glutInitContextProfile(GLUT_核心_配置文件);

cout在Glew init之后添加以下代码:

GLuint VBO;
GLuint VAO;

glGenVertexArrays(1, &VAO);
glBindVertexArray(VAO);

static const GLfloat fl[] = {
    0.583f,  0.771f,  0.014f,
    0.609f,  0.115f,  0.436f,
    0.327f,  0.483f,  0.844f,
    0.822f,  0.569f,  0.201f,
    0.435f,  0.602f,  0.223f,
    0.310f,  0.747f,  0.185f,
    0.597f,  0.770f,  0.761f,
    0.559f,  0.436f,  0.730f,
    0.359f,  0.583f,  0.152f,
    0.483f,  0.596f,  0.789f,
    0.559f,  0.861f,  0.639f,
    0.195f,  0.548f,  0.859f,
    0.014f,  0.184f,  0.576f,
    0.771f,  0.328f,  0.970f,
    0.406f,  0.615f,  0.116f,
    0.676f,  0.977f,  0.133f,
    0.971f,  0.572f,  0.833f,
    0.140f,  0.616f,  0.489f,
    0.997f,  0.513f,  0.064f,
    0.945f,  0.719f,  0.592f,
    0.543f,  0.021f,  0.978f,
    0.279f,  0.317f,  0.505f,
    0.167f,  0.620f,  0.077f,
    0.347f,  0.857f,  0.137f,
    0.055f,  0.953f,  0.042f,
    0.714f,  0.505f,  0.345f,
    0.783f,  0.290f,  0.734f,
    0.722f,  0.645f,  0.174f,
    0.302f,  0.455f,  0.848f,
    0.225f,  0.587f,  0.040f,
    0.517f,  0.713f,  0.338f,
    0.053f,  0.959f,  0.120f,
    0.393f,  0.621f,  0.362f,
    0.673f,  0.211f,  0.457f,
    0.820f,  0.883f,  0.371f,
    0.982f,  0.099f,  0.879f
};

glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(fl), fl, GL_STATIC_DRAW);

const GLchar* vertShaderSource = "#version 450 core\n"
    "in vec3 vp;\n"
    "void main() {\n"
    "  gl_Position = vec4(vp, 1.0);\n"
    "}\n";

const GLchar* fragShaderSource =
    "#version 450 core\n"
    "out vec4 fColor;\n"
    "void main()"
    "{"
    "fColor = vec4(0.0, 0.0, 1.0, 1.0);"
    "}";

GLint vertShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertShader, 1, &vertShaderSource, NULL);
glCompileShader(vertShader);

GLint fragShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragShader, 1, &fragShaderSource, NULL);
glCompileShader(fragShader);

GLint program = glCreateProgram();
glAttachShader(program, vertShader);
glAttachShader(program, fragShader);
glLinkProgram(program);

glUseProgram(program);

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
然后画

你的代码到处都有问题,你只是复制粘贴了它,不是吗? 这是我给一些x值加负数前后得到的结果。我不认为它是立方体,我认为它是随机点


在Glew init之后添加以下代码:

GLuint VBO;
GLuint VAO;

glGenVertexArrays(1, &VAO);
glBindVertexArray(VAO);

static const GLfloat fl[] = {
    0.583f,  0.771f,  0.014f,
    0.609f,  0.115f,  0.436f,
    0.327f,  0.483f,  0.844f,
    0.822f,  0.569f,  0.201f,
    0.435f,  0.602f,  0.223f,
    0.310f,  0.747f,  0.185f,
    0.597f,  0.770f,  0.761f,
    0.559f,  0.436f,  0.730f,
    0.359f,  0.583f,  0.152f,
    0.483f,  0.596f,  0.789f,
    0.559f,  0.861f,  0.639f,
    0.195f,  0.548f,  0.859f,
    0.014f,  0.184f,  0.576f,
    0.771f,  0.328f,  0.970f,
    0.406f,  0.615f,  0.116f,
    0.676f,  0.977f,  0.133f,
    0.971f,  0.572f,  0.833f,
    0.140f,  0.616f,  0.489f,
    0.997f,  0.513f,  0.064f,
    0.945f,  0.719f,  0.592f,
    0.543f,  0.021f,  0.978f,
    0.279f,  0.317f,  0.505f,
    0.167f,  0.620f,  0.077f,
    0.347f,  0.857f,  0.137f,
    0.055f,  0.953f,  0.042f,
    0.714f,  0.505f,  0.345f,
    0.783f,  0.290f,  0.734f,
    0.722f,  0.645f,  0.174f,
    0.302f,  0.455f,  0.848f,
    0.225f,  0.587f,  0.040f,
    0.517f,  0.713f,  0.338f,
    0.053f,  0.959f,  0.120f,
    0.393f,  0.621f,  0.362f,
    0.673f,  0.211f,  0.457f,
    0.820f,  0.883f,  0.371f,
    0.982f,  0.099f,  0.879f
};

glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(fl), fl, GL_STATIC_DRAW);

const GLchar* vertShaderSource = "#version 450 core\n"
    "in vec3 vp;\n"
    "void main() {\n"
    "  gl_Position = vec4(vp, 1.0);\n"
    "}\n";

const GLchar* fragShaderSource =
    "#version 450 core\n"
    "out vec4 fColor;\n"
    "void main()"
    "{"
    "fColor = vec4(0.0, 0.0, 1.0, 1.0);"
    "}";

GLint vertShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertShader, 1, &vertShaderSource, NULL);
glCompileShader(vertShader);

GLint fragShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragShader, 1, &fragShaderSource, NULL);
glCompileShader(fragShader);

GLint program = glCreateProgram();
glAttachShader(program, vertShader);
glAttachShader(program, fragShader);
glLinkProgram(program);

glUseProgram(program);

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
然后画

你的代码到处都有问题,你只是复制粘贴了它,不是吗? 这是我给一些x值加负数前后得到的结果。我不认为它是立方体,我认为它是随机点


从外观上看,您正在使用片段字符串覆盖顶点着色器代码。您需要分别使用
GL_顶点着色器
GL_片段着色器
调用
glAttachShader
,以及另一个
glAttachShader
(对同一程序).

从外观上看,您正在使用片段字符串覆盖顶点着色器代码。您需要分别使用
GL_顶点着色器
GL_片段着色器
调用
glAttachShader
,以及另一个
glAttachShader
(对同一程序)。

除了其他两个答案之外:

  • 您必须将换行符添加到片段着色器代码中。并且您应该检查它们是否编译并链接成功
  • 假设
    vp
    属性指定了位置1,但这不能保证。要么向着色器添加布局限定符,要么查询属性位置

除了其他两个答案外:

  • 您必须将换行符添加到片段着色器代码中。并且您应该检查它们是否编译并链接成功
  • 假设
    vp
    属性指定了位置1,但这不能保证。要么向着色器添加布局限定符,要么查询属性位置

我没有具体的教程。我是看着别人写代码的。在乞讨时,我试图画顶点,但没有生成数组缓冲,但我什么也没画。你能修复我的代码吗?我没有具体的教程。我是看着别人写代码的。在乞讨时,我试图画顶点tex没有生成数组缓冲,但我什么也没画。你能修好我的代码吗?我什么也没做。然后请更新问题。否则,现在没人知道代码是什么样子。哈哈,他创建了36个VAO,你不担心吗?@TitoneMaurice哦,天哪,我几乎能听到他的GPU在这里哭泣。我做了,但什么都没做更新问题。否则现在没人知道代码是什么样子的。哈哈,他创造了36个VAO,你不担心吗?@TitoneMaurice哦,天哪,我几乎可以听到他的GPU在这里哭泣。