小编Ein*_*rus的帖子

OpenGL着色语言不同类型的变量(限定符)

我一直在用OpenGL编写程序.最近,我开始学习OpenGL着色语言.我是新手; 所以请详细说明你的答案.

我的问题是:

  1. GLSL中有哪些不同类型的变量(限定符)?
  2. 它们用于什么?
  3. 他们彼此如何不同?

我只熟悉从"顶点着色器"传递到"片段着色器"以在顶点之间进行插值的"变化"变量.除此之外,我什么都不知道.

opengl shader glsl vertex fragment-shader

13
推荐指数
1
解决办法
6024
查看次数

为什么我的Flatten着色器(来自Lighthouse3d教程)不起作用?

我是GLSL的新手.所以,我正在浏览网上的教程.

本教程有一个名为Flatten Shader的示例,它将GLUT茶壶显示为展平的茶壶.这是Flatten Shader的链接.

我完成了与教程中提到的步骤完全相同的所有操作,但我的茶壶并不像教程中的茶壶那样平坦.它看起来像一个普通的茶壶.

以下是顶点着色器的代码:

  void main()
  {
     vec4 v = vec4(gl_Vertex);
     v.z = 0.0;
     gl_Position = gl_ModelViewProjectionMatrix * v;
  }
Run Code Online (Sandbox Code Playgroud)

这是我的片段着色器:

 void main()
 {
    gl_FragColor = gl_Color;
 }
Run Code Online (Sandbox Code Playgroud)

以下是我绘制茶壶的方法:

 void display ( void )
{   
    glClearDepth(1.0);

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glMatrixMode( GL_MODELVIEW );

    glLoadIdentity();

    gluLookAt( 0.0, 0.0, 2.0,
           0.0, 0.0, 0.0,
           0.0, 1.0, 0.0
             );

    glMultMatrixd(trackball->getRotation());

    const GLfloat diffuseIntensity[] = { 0.8, 0.4, 0.4, 1.0 };
    const GLfloat specularIntensity[] = { 0.5, 0.5, 0.5, 1.0 …
Run Code Online (Sandbox Code Playgroud)

c++ opengl shader glut glsl

1
推荐指数
1
解决办法
457
查看次数

标签 统计

glsl ×2

opengl ×2

shader ×2

c++ ×1

fragment-shader ×1

glut ×1

vertex ×1