标签: opengl-compat

GL_QUAD绘制三角形

我正在尝试填充由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)

这是我得到的结果:

python opengl pyopengl opengl-compat

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

纹理平面上的 OpenGL 光照不起作用

我想照亮纹理平面,但这行不通。实心球上的光很好,但纹理平面上的光不亮。

整体形象

实心球体上的照明效果良好。

但是,纹理平面上的照明不起作用。(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)

c++ opengl textures lighting opengl-compat

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

如何在 glfw 中使用 glutDisplayFunc、glutMainLoop?

我有一个使用 glut 的小程序,我现在需要使用 glfw 的原因有很多。由于我从未使用过 glfw,所以我遇到了很多问题。主要的有以下功能:glutDisplayFuncglutReshapeFuncglutIdleFuncglutMainLoop。我刚刚发现 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)

c++ opengl glfw opengl-compat

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

OpenGL:在没有着色器的情况下绘制乘法三角形

如何在没有着色器的情况下绘制三角形?我有这样的功能:

void GLRenderSystem::renderTriangleSoup(const std::vector<Vertex>& vertices)
{
    /????
}
Run Code Online (Sandbox Code Playgroud)

c++ opengl render vector opengl-compat

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

标签 统计

opengl ×4

opengl-compat ×4

c++ ×3

glfw ×1

lighting ×1

pyopengl ×1

python ×1

render ×1

textures ×1

vector ×1