我正在尝试在OpenGL 3.2中编译着色器程序,但是我遇到了一个奇怪的链接错误.
在创建顶点和片段着色器编译并附加它们之后,我尝试将它们链接到程序中但是我收到以下infolog错误:
ERROR: Compiled vertex shader was corrupt.
ERROR: Compiled fragment shader was corrupt.
Run Code Online (Sandbox Code Playgroud)
我完全不知道这意味着什么,我在谷歌上唯一能找到的就是忽略它.但是,当我glUseProgram()时,我得到一个无效的操作,所以我不能忽略这个错误.
此外,我刚刚更新到XCode 5,并且相同的代码/着色器源正在工作.不知道它是如何相关的..
编辑:着色器源
顶点:
#version 150
in vec3 position;
uniform mat4 worldMatrix;
uniform float time;
out vec3 outPos;
void main(){
gl_Position = worldMatrix*vec4(position, 1.0);
outPos = position;
}
Run Code Online (Sandbox Code Playgroud)
分段:
#version 150
out vec4 outColor;
uniform float time;
uniform float red;
uniform float green;
uniform float blue;
void main(){
outColor=vec4(red, green, blue,1.0);
}
Run Code Online (Sandbox Code Playgroud) 如何在CGAL中具有任意多面体(可以是凸,凹或什至有孔的多面体),如何对它的面进行三角剖分,以便可以创建用于渲染的OpenGL缓冲区?
我已经看到凸_hull_3()返回具有三角面的多面体,但是对于任意的多面体它并不能满足我的要求。
鉴于我有一个最初是空的图,它将逐渐添加边缘(一个接一个),那么检测和识别出现的循环的最佳方法是什么?
每次添加新边时,我是否都必须检查整个图中的循环?这种方法没有利用已经进行的计算。有没有我还没有找到的算法?
谢谢。
我一直在使用Xcode中的GLFW 2进行OpenGL项目,一切都运行得很好.我能够创建一个3.2 OpenGL上下文,并渲染一切.
但是,昨天我安装了GLFW3 lib并进行了修改建议.现在我根本无法创建3.2上下文,它总是返回3.0.3上下文.我能做错什么?
我在glfw之前加入了glew标题
这是我的初始化代码:
if(!glfwInit()){
std::cout << "ERROR IN glfwInit()" << std::endl;
return;
}
mWindow = glfwCreateWindow(mWidth, mHeight, "GLFW Renderer", NULL, NULL);;
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
if(!mWindow){
std::cout << "ERROR IN glfwOpenWindow" << std::endl;
glfwTerminate();
return;
}
/* Make the window's context current */
glfwMakeContextCurrent(mWindow);
int major, minor, rev;
glfwGetVersion(&major, &minor, &rev);
std::cout << "OpenGL " << major << "." << minor << "." << rev << std::endl;
glewExperimental = GL_TRUE;
if(glewInit() != …Run Code Online (Sandbox Code Playgroud)