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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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中吗?_C++_Opengl_Glfw - Fatal编程技术网

C++ 三角形不会出现在opengl中吗?

C++ 三角形不会出现在opengl中吗?,c++,opengl,glfw,C++,Opengl,Glfw,我可以让Opengl三角形显示出来 #include <GL/glew.h> #include <GLFW/glfw3.h> #include <iostream> const char* vertexShaderSource = "#version 330 core\n" "layout (location = 0) in vec3 aPos;\n" "void main()\n" "{\n" " gl_Position = vec4(aPos.x,

我可以让Opengl三角形显示出来

#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>

const char* vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
"   gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";
const char* fragmentShaderSource = "#version 330 core\n"
"out vec4 FragColor;\n"
"void main()\n"
"{\n"
"   FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
"}\n\0";


void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}

void processInput(GLFWwindow *window) {
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) { glfwSetWindowShouldClose(window, true); }
}

int main()
{


    glewExperimental = GL_TRUE;
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    GLFWwindow* window{ glfwCreateWindow(800,600,"Opengl",NULL,NULL) };

    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);


    glfwMakeContextCurrent(window);


     GLenum err = glewInit();
   if (glewInit() != GLEW_OK) { std::cout << glewGetErrorString(err); return -1; }







    int vertexShader;
    vertexShader = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
    glCompileShader(vertexShader);

    int fragmentShader;
    fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
    glShaderSource(fragmentShader,1,&fragmentShaderSource,NULL);
    glCompileShader(fragmentShader);



    int shaderProgram = glCreateProgram();
    glAttachShader(shaderProgram,vertexShader);
    glAttachShader(shaderProgram,fragmentShader);
    glLinkProgram(shaderProgram);


    glDeleteShader(vertexShader);
    glDeleteShader(fragmentShader);

    float triangle[]{ -0.5f,-0.5f,0.0f,
                      0.5f,-0.5f,0.0,
                      0.0f,-0.5f,0.0f };


    unsigned int VAO,buffer;
    glGenVertexArrays(1, &VAO);
    glBindVertexArray(VAO);


    glGenBuffers(1, &buffer);
    glBindBuffer(GL_ARRAY_BUFFER, buffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(triangle), triangle, GL_STATIC_DRAW);


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

    glBindBuffer(GL_ARRAY_BUFFER,0);
    glBindVertexArray(0);


    if (window == NULL) {
        std::cout << "Window is null";
        glfwTerminate();
        return -1;
    }





    while (!glfwWindowShouldClose(window))
    {


        processInput(window);

        glClearColor(0.2f, 0.2f, 0.2f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        glUseProgram(shaderProgram);
        glBindVertexArray(VAO);
        glDrawArrays(GL_TRIANGLES,0,3);


        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();



    return 0;
}
#包括
#包括
#包括
const char*vertexShaderSource=“#版本330核心\n”
“vec3 aPos中的布局(位置=0);\n”
“void main()\n”
“{\n”
“gl_Position=vec4(aPos.x,aPos.y,aPos.z,1.0);\n”
"}\0";
常量字符*fragmentShaderSource=“#版本330核心\n”
“out vec4 FragColor;\n”
“void main()\n”
“{\n”
FragColor=vec4(1.0f,0.5f,0.2f,1.0f);\n
“}\n\0”;
无效帧缓冲区大小回调(GLFWwindow*窗口,整型宽度,整型高度)
{
glViewport(0,0,宽度,高度);
}
无效进程输入(GLFWwindow*窗口){
如果(glfwGetKey(窗口,GLFW_键_转义)=GLFW_按){glfwSetWindowShouldClose(窗口,真);}
}
int main()
{
glewExperimental=GL_TRUE;
glfwInit();
glfwWindowHint(GLFW_上下文_版本_专业,3);
glfwWindowHint(GLFW_上下文_版本_小调,3);
glfwWindowHint(GLFW_OPENGL_配置文件、GLFW_OPENGL_核心配置文件);
GLFWwindow*窗口{glfwCreateWindow(800600,“Opengl”,NULL,NULL)};
glfwSetFramebufferSizeCallback(窗口,帧缓冲区大小回调);
glfwMakeContextCurrent(窗口);
GLenum err=glewInit();

如果(glewInit()!=GLEW_OK){std::cout所有三角形顶点都是,则会生成一个三角形

将第三个点的y坐标向上移动到
0.5
对我很有用:

float三角形[]
{
-0.5f,-0.5f,0.0f,
0.5f,-0.5f,0.0f,
0.0f,0.5f,0.0f,
};

总而言之:

#包括
#包括
#包括
常量字符*vertexShaderSource=
“#版本330核心\n”
“vec3 aPos中的布局(位置=0);\n”
“void main()\n”
“{\n”
“gl_位置=vec4(aPos.x,aPos.y,”
“aPos.z,1.0);\n”
"}\0";
常量字符*fragmentShaderSource=
“#版本330核心\n”
“out vec4 FragColor;\n”
“void main()\n”
“{\n”
“FragColor=vec4(1.0f、0.5f、0.2f,”
“1.0f);\n”
“}\n\0”;
无效帧缓冲区大小回调(GLFWwindow*窗口,整型宽度,整型高度)
{
glViewport(0,0,宽度,高度);
}
无效进程输入(GLFWwindow*窗口)
{
如果(glfwGetKey(窗口,GLFW_键_退出)==GLFW_按)
{
glfwSetWindowShouldClose(窗口,真);
}
}
int main()
{
glewExperimental=GL_TRUE;
glfwInit();
glfwWindowHint(GLFW_上下文_版本_专业,3);
glfwWindowHint(GLFW_上下文_版本_小调,3);
glfwWindowHint(GLFW_OPENGL_配置文件、GLFW_OPENGL_核心配置文件);
GLFWwindow*窗口{glfwCreateWindow(800600,“Opengl”,NULL,NULL)};
glfwSetFramebufferSizeCallback(窗口,帧缓冲区大小回调);
glfwMakeContextCurrent(窗口);
GLenum err=glewInit();
如果(glewInit()!=GLEW\u确定)
{

std::cout所有三角形顶点都是三角形,从而形成三角形

将第三个点的y坐标向上移动到
0.5
对我很有用:

float三角形[]
{
-0.5f,-0.5f,0.0f,
0.5f,-0.5f,0.0f,
0.0f,0.5f,0.0f,
};

总而言之:

#包括
#包括
#包括
常量字符*vertexShaderSource=
“#版本330核心\n”
“vec3 aPos中的布局(位置=0);\n”
“void main()\n”
“{\n”
“gl_位置=vec4(aPos.x,aPos.y,”
“aPos.z,1.0);\n”
"}\0";
常量字符*fragmentShaderSource=
“#版本330核心\n”
“out vec4 FragColor;\n”
“void main()\n”
“{\n”
“FragColor=vec4(1.0f、0.5f、0.2f,”
“1.0f);\n”
“}\n\0”;
无效帧缓冲区大小回调(GLFWwindow*窗口,整型宽度,整型高度)
{
glViewport(0,0,宽度,高度);
}
无效进程输入(GLFWwindow*窗口)
{
如果(glfwGetKey(窗口,GLFW_键_退出)==GLFW_按)
{
glfwSetWindowShouldClose(窗口,真);
}
}
int main()
{
glewExperimental=GL_TRUE;
glfwInit();
glfwWindowHint(GLFW_上下文_版本_专业,3);
glfwWindowHint(GLFW_上下文_版本_小调,3);
glfwWindowHint(GLFW_OPENGL_配置文件、GLFW_OPENGL_核心配置文件);
GLFWwindow*窗口{glfwCreateWindow(800600,“Opengl”,NULL,NULL)};
glfwSetFramebufferSizeCallback(窗口,帧缓冲区大小回调);
glfwMakeContextCurrent(窗口);
GLenum err=glewInit();
如果(glewInit()!=GLEW\u确定)
{
标准::cout