C++ glCreateShader(GL_顶点_着色器);访问冲突执行位置
我正在尝试绘制一些文本,在尝试为文本创建着色器程序时,我从GLuint vertexShader=glCreateShaderGL_VERTEX_shader获得访问冲突执行位置错误 主要功能的启动,问题是:C++ glCreateShader(GL_顶点_着色器);访问冲突执行位置,c++,opengl,glut,glfw,C++,Opengl,Glut,Glfw,我正在尝试绘制一些文本,在尝试为文本创建着色器程序时,我从GLuint vertexShader=glCreateShaderGL_VERTEX_shader获得访问冲突执行位置错误 主要功能的启动,问题是: int main(int argc, char **argv) { //GLTtext* text = gltCreateText(); //gltSetText(text, "ElectroCraft"); //GLFWwindow* window; i
int main(int argc, char **argv) {
//GLTtext* text = gltCreateText();
//gltSetText(text, "ElectroCraft");
//GLFWwindow* window;
int width = 860, height = 490;
if (!glfwInit()) {
printf("failed to init glfw");
return -1;
}
glutInit(&argc, argv);
window = glfwCreateWindow(width, height, "ElectroCraft", NULL, NULL);
glfwMakeContextCurrent(window);
if (!window) {
printf("failed to start window");
glfwTerminate();
return -1;
}
/*if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}*/
//build and compile shader program
//-----------------------------------
//vertex shader
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);
//check for shader compile errors
int success;
char infoLog[512];
glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
if (!success) {
glGetShaderInfoLog(vertexShader, 512, NULL, infoLog);
std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" << infoLog << std::endl;
}
//fragment shader
int fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
glCompileShader(fragmentShader);
//check for shader compile errors
glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success);
if (!success) {
glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog);
std::cout << "ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n" << infoLog << std::endl;
}
// link shaders
int shaderProgram = glCreateProgram();
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
glLinkProgram(shaderProgram);
//check for liunking errors
glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
if (!success) {
glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog);
std::cout << "ERROR::SHADER::PROGRAM::LINKING_FAILED\n" << infoLog << std::endl;
}
...
所有这些都包括,因为这可能也是问题所在:
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <GL/freeglut.h>
#include <map>
#include <GL/GL.h>
#include <stdio.h>
#include <string>
#include <glm\glm.hpp>
#include <iostream>
#include <ft2build.h>
//#include <glad.h>
#include FT_FREETYPE_H
using namespace std;
我可能会遇到这个问题,因为我可能没有提供正确的参数或其他东西。您已经包含了glew,但尚未初始化它
在访问任何总账功能之前,请插入以下代码:
GLenum err = glewInit();
if (GLEW_OK != err)
{
/* Problem: glewInit failed, something is seriously wrong. */
std::cerr << "Error: " << glewGetErrorString(err) << std::endl;
...
}
std::cerr << "Status: Using GLEW " << glewGetString(GLEW_VERSION) << std::endl;
参考资料:我已经将其添加到我的项目中并运行了它。我仍然收到相同的错误,您是否链接到了GLEW库?您可以将glewExperimental=GL\u设置为TRUE;在调用glewInit之前;顺便说一下,您应该删除以下标题:GL/freeglut.h和GL/GL.hr删除这两个标题可以阻止问题的发生,但由于上面的示例代码中没有包含其他一些内容,我似乎需要这两个标题,因为我会遇到更多错误,例如glClear undefined。但这两个标题可能导致glCreateShader出现此错误的原因是什么