GLSL 和 glBegin(GL_TRIANGLES) 不起作用
GLSL and glBegin(GL_TRIANGLES) not working
此代码仅呈现十二面体并完全忽略glBegin(GL_TRIANGLES)
块:
glutSolidDodecahedron();
glBegin(GL_TRIANGLES);
glNormal3f(1, 0, 0);
glVertex3f(11, 0, 0);
glNormal3f(0, 1, 1);
glVertex3f(-11, 0, 0);
glNormal3f(0, 0, 1);
glVertex3f(0, 0, 11);
glEnd();
这两个着色器非常简单:
顶点着色器:
varying vec3 normal;
void main()
{
gl_Position = ftransform();
gl_FrontColor = gl_Color;
gl_BackColor = gl_Color;
normal = gl_Normal;
normal = gl_NormalMatrix * normal;
}
和碎片:
uniform vec3 lightDir;
varying vec3 normal;
void main()
{
float intensity = dot(lightDir, normal);
gl_FragColor = 0.5 * (1.5 + intensity) * gl_Color;
}
虽然glutSolidX
类型的函数在此示例中效果很好(基于 Lightouse3D 教程),但如何快速绘制从一帧到另一帧更改坐标的三角形(我尝试了数组和GL_DYNAMIC_DRAW,但与旧的"固定管道"方法相比,工作量太大了)。我看到其他人仍然设法成功地将glBegin(..); glEnd();
块与 GLSL 着色器一起使用,所以这肯定是可能的。可能缺少什么?
glBegin/glEnd 块中三角形顶点的坐标为
11, 0, 0
-11, 0, 0
0, 0, 11
这意味着它在视图中完全平坦。这就像从如此坚硬的角度看一张纸,它变成了一条线。因为三角形没有厚度,所以连这条线都没有画出来,三角形似乎看不见。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- 为什么这段代码不起作用,我该如何解决?
- 我正在开发服务器,ip作为参数传递不起作用