小编Jon*_*nba的帖子

为什么我的OpenGL Phong着色器表现得像平面着色器?

过去几周我一直在学习OpenGL,我在实现Phong着色器方面遇到了一些麻烦.尽管使用了smooth限定符,但似乎在顶点之间没有插值.我在这里错过了什么吗?为了给予信用到期的信用,顶点和片段着色器的代码严重影响了OpenGL SuperBible第五版.我强烈推荐这本书!

顶点着色器:

#version 330
in vec4 vVertex;
in vec3 vNormal;
uniform mat4 mvpMatrix;  // mvp = ModelViewProjection
uniform mat4 mvMatrix; // mv = ModelView
uniform mat3 normalMatrix;
uniform vec3 vLightPosition;
smooth out vec3 vVaryingNormal;
smooth out vec3 vVaryingLightDir;

void main(void) {
 vVaryingNormal = normalMatrix * vNormal;
 vec4 vPosition4 = mvMatrix * vVertex;
 vec3 vPosition3 = vPosition4.xyz / vPosition4.w;
 vVaryingLightDir = normalize(vLightPosition - vPosition3);
 gl_Position = mvpMatrix * vVertex;
}
Run Code Online (Sandbox Code Playgroud)

片段着色器:

#version 330
out vec4 vFragColor; …
Run Code Online (Sandbox Code Playgroud)

opengl shader glsl pyopengl

48
推荐指数
2
解决办法
2万
查看次数

我在哪里可以找到一个不使用任何弃用功能的优秀在线OpenGL 3.0教程?

我刚刚购买了第五版的OpenGL SuperBible.我很高兴他们避免使用已弃用的功能,但他们的例子可以使用GLTools.GLTools提供了一系列有用的功能,用于渲染简单的3D对象和管理视图截头,相机和变换矩阵.

这一切都很棒,但提供的抽象隐藏了低级细节,我很难移动到我无法使用的代码GLTools- 例如,pyopengl.我在网上看到的绝大多数教程都使用了立即模式,我试图避免这种模式.那些使用glDrawArrays使用的glEnableClientState,这我也想避免的.

我正在寻找的是完全符合OpenGL 3.x的入门教程.如果这个订单太高了,也许洗衣清单很好的"起点"功能将是有序的.

opengl pyopengl deprecated opengl-3

33
推荐指数
1
解决办法
3万
查看次数

标签 统计

opengl ×2

pyopengl ×2

deprecated ×1

glsl ×1

opengl-3 ×1

shader ×1