我正在尝试填充由4行生成的四边形GL_LINES.但是,当我尝试填充四边形时,它只填充三角形.这是绘制线条的代码:
def SurfaceContour(self, vertices, edges):
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glColor3fv((1.0, 0.0, 0.0))
glVertex3fv(vertices[vertex])
glEnd()
Run Code Online (Sandbox Code Playgroud)
这是绘制填充四边形的代码:
def Surfaces(self, vertices):
glBegin(GL_QUADS)
for i in range(4):
glColor4f(1, 1, 1, 0.3)
glVertex3fv(vertices[i ,:])
glEnd()
Run Code Online (Sandbox Code Playgroud)
这是我传入的顶点矩阵:
[[ 0. -20.23 7. ]
[ 0. -20.23 -7. ]
[ 100. -10. 5. ]
[ 100. -10. -5. ]]
Run Code Online (Sandbox Code Playgroud)
我想照亮纹理平面,但这行不通。实心球上的光很好,但纹理平面上的光不亮。
实心球体上的照明效果良好。

但是,纹理平面上的照明不起作用。(GL_DECAL,GL_REPLACE;我也尝试过GL_MODULATE)

这是我的渲染代码的片段。(完整代码在 GitHub 上)
加载纹理。
sf::Image image;
if (!image.loadFromFile(path))
return false;
glGenTextures(1, &id);
glBindTexture(GL_TEXTURE_2D, id);
glTexImage2D(
GL_TEXTURE_2D, 0, GL_RGBA,
image.getSize().x, image.getSize().y, 0,
GL_RGBA, GL_UNSIGNED_BYTE,
image.getPixelsPtr()
);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
Run Code Online (Sandbox Code Playgroud)
初始化
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glShadeModel(GL_SMOOTH);
//glEnable(GL_CULL_FACE);
glFrontFace(GL_CCW);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glutSetCursor(GLUT_CURSOR_NONE);
light.Init();
camera.SetPin((GLfloat)width / 2, (GLfloat)height/2);
Run Code Online (Sandbox Code Playgroud)
显示回调
adjustPerspective();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_LIGHTING);
glPushMatrix();
camera.SetLookAt();
light.On();
// TODO: dsiplay processing
for (auto& obj …Run Code Online (Sandbox Code Playgroud) 我有一个使用 glut 的小程序,我现在需要使用 glfw 的原因有很多。由于我从未使用过 glfw,所以我遇到了很多问题。主要的有以下功能:glutDisplayFunc,glutReshapeFunc,glutIdleFunc和glutMainLoop。我刚刚发现 glfw 中没有等效的功能。我应该如何修改我的程序?
我的程序是关于一个 3 维旋转的锥体
我有一个功能displaycone:
void displayCone(void){
// clear the drawing buffer.
glClear(GL_COLOR_BUFFER_BIT); //
// set matrix mode
glMatrixMode(GL_MODELVIEW);
// clear model view matrix
glLoadIdentity();
// multiply view matrix to current matrix
gluLookAt(3.0, 3.0, 3.0-4.5, 0.0, 0.0,-4.5,0,1,0);
// ******
glPushMatrix();
glTranslatef(0.0, 0.0, -4.5);
glBegin(GL_LINES);
glColor3f (1.0, 1.0, 0.0);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(2.0, 0.0, 0.0);
glColor3f (1.0, 1.0, 0.0);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(0.0, 2.0, …Run Code Online (Sandbox Code Playgroud) 如何在没有着色器的情况下绘制三角形?我有这样的功能:
void GLRenderSystem::renderTriangleSoup(const std::vector<Vertex>& vertices)
{
/????
}
Run Code Online (Sandbox Code Playgroud)