簡體   English   中英

在Linux終端上使用C ++編譯示例opengl應用程序

[英]Compiling example opengl application using c++ on linux terminal

因此,標題幾乎可以解釋所有內容,因此,請告訴我為什么這對我不起作用。

我有一個簡單的OpenGL應用程序,應該使用GLFW庫進行編譯和運行。 到目前為止,我已經下載並測試了所有OpenGL和GLFW庫,以及其他庫(例如GLUT)。 通過終端編譯應用程序時,我還鏈接所需的庫,如下所示(我不確定要使用哪個庫,這就是為什么我把其中的一些庫不具備專業知識的原因):

g++ -std=gnu++11 -lglut -lGL -lGLU -lGLEW -lglfw3 -lGL -lm -lXrandr -lXi -lX11 -lXxf86vm -lpthread main.cpp -o main -I external/include/

讓我分享一下ls在該項目目錄上顯示的內容:

external    gl_app.hpp       main.cpp    models.hpp
gl_app.cpp  gl_includes.hpp  models.cpp  Readme.md

external文件夾包含main.cpp文件中包含的某些標頭。 這就是為什么我也稱這個文件夾。

這是main.cpp的前十行。 "glm/*.hpp"文件位於external文件夾中。

#include "gl_app.hpp"
#include "models.hpp"

#include <glm/vec2.hpp>
#include <glm/mat4x4.hpp>
#include <glm/gtc/matrix_transform.hpp>

#include <iostream>
#include <memory>
#include <cmath>

畢竟,這是我收到的錯誤消息。 它只是抱怨聲明。 我閱讀了許多文檔和相關問題,實現了許多面臨非常相似問題的解決方案。 但就我而言,問題仍然存在。

有什么幫助嗎?

main.cpp: In member function ‘virtual bool gl_ifi::GlExample::init()’:

main.cpp:78:54: error: ‘glViewport’ was not declared in this scope
         glViewport(0, 0, int(fbSize.x), int(fbSize.y));
                                                      ^
main.cpp:87:53: error: ‘glCreateShader’ was not declared in this scope
         vertShader = glCreateShader(GL_VERTEX_SHADER);
                                                     ^
main.cpp:88:59: error: ‘glShaderSource’ was not declared in this scope
         glShaderSource(vertShader, 1, &vertShaderSource, 0);
                                                           ^
main.cpp:89:35: error: ‘glCompileShader’ was not declared in this scope
         glCompileShader(vertShader);
                                   ^
main.cpp:90:61: error: ‘glGetShaderiv’ was not declared in this scope
         glGetShaderiv(vertShader, GL_COMPILE_STATUS, &status);
                                                             ^
main.cpp:93:64: error: ‘glGetShaderInfoLog’ was not declared in this scope
             glGetShaderInfoLog(vertShader, 512, 0, errorMessage);
                                                                ^
main.cpp:106:64: error: ‘glGetShaderInfoLog’ was not declared in this scope
             glGetShaderInfoLog(fragShader, 512, 0, errorMessage);
                                                                ^
main.cpp:113:36: error: ‘glCreateProgram’ was not declared in this scope
         program_ = glCreateProgram();
                                    ^
main.cpp:115:44: error: ‘glAttachShader’ was not declared in this scope
         glAttachShader(program_, vertShader);
                                            ^
main.cpp:117:31: error: ‘glLinkProgram’ was not declared in this scope
         glLinkProgram(program_);
                               ^
main.cpp:118:57: error: ‘glGetProgramiv’ was not declared in this scope
         glGetProgramiv(program_, GL_LINK_STATUS, &status);
                                                         ^
main.cpp:120:63: error: ‘glGetProgramInfoLog’ was not declared in this scope
             glGetProgramInfoLog(program_, 512, 0, errorMessage);
                                                               ^
main.cpp:125:34: error: ‘glDeleteShader’ was not declared in this scope
         glDeleteShader(vertShader);
                                  ^
main.cpp:129:65: error: ‘glGetUniformLocation’ was not declared in this scope
         uniformMVP_ = glGetUniformLocation(program_, "mvpMatrix");
                                                                 ^
main.cpp: In member function ‘virtual bool gl_ifi::GlExample::render()’:
main.cpp:137:31: error: ‘glEnable’ was not declared in this scope
         glEnable(GL_DEPTH_TEST);
                               ^
main.cpp:138:31: error: ‘glDisable’ was not declared in this scope
         glDisable(GL_CULL_FACE);
                               ^
main.cpp:141:44: error: ‘glClearColor’ was not declared in this scope
         glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
                                            ^
main.cpp:142:58: error: ‘glClear’ was not declared in this scope
         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                                                          ^
main.cpp:145:30: error: ‘glUseProgram’ was not declared in this scope
         glUseProgram(program_);
                              ^
main.cpp:149:71: error: ‘glUniformMatrix4fv’ was not declared in this scope
     glUniformMatrix4fv(uniformMVP_, 1, GL_FALSE, &mvpMatrix_[0][0]);
                                                                   ^
main.cpp:151:52: error: ‘glBindVertexArray’ was not declared in this scope
         glBindVertexArray(cube_->getVertexArrayId());
                                                    ^
main.cpp:153:42: error: ‘glDrawElements’ was not declared in this scope
                        GL_UNSIGNED_INT, 0);
                                          ^
main.cpp: In member function ‘virtual bool gl_ifi::GlExample::end()’:
main.cpp:163:37: error: ‘glDeleteProgram’ was not declared in this scope
             glDeleteProgram(program_);
                                     ^

未在范圍中聲明意味着您沒有包括標頭,或未正確包含標頭。

  #include <GL/glut.h>

應該給你一切。 如果這不起作用,請嘗試gl.h。

這些“未聲明glXXX”表示您不包含glew。

嘗試類似#include "GLEW/include/GL/glew.h這樣的想法。這個想法是必須首先包含glew.h

Glew用於查找OpenGL> 1.3的glXXX函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM