cichaqiu4015 2017-06-29 08:50 采纳率: 0%
浏览 1202

OpenGL显示的图形没有三维效果,请大神帮忙看看是什么问题。万分感激。

OpenGL显示时是这个样子
想要的效果是这样的

我是读取了一个STL文件,想用OpenGL显示,但是显示出的效果却是第一幅图像平面的,我希望是像第二幅图那样显示的。请问是光照或者其他什么设置问题吗?希望大家能帮我看看,非常感谢!部分代码是这样的。

Public Sub CreateGLPannel(Pannel As PictureBox)'创建绘图场景
 Dim PixelFormat As GLuint
  Dim pfd As PIXELFORMATDESCRIPTOR
 With pfd
     .cColorBits = Bits
     .cDepthBits = 16
     .dwFlags = PFD_DRAW_TO_WINDOW Or PFD_SUPPORT_OPENGL Or PFD_DOUBLEBUFFER
     .iLayerType = PFD_MAIN_PLANE
     .iPixelType = PFD_TYPE_RGBA
     .nSize = Len(pfd)
     .nVersion = 1
 End With
 PixelFormat = ChoosePixelFormat(Pannel.hdc, pfd)
 SetPixelFormat Pannel.hdc, PixelFormat, pfd 
 hrc = wglCreateContext(Pannel.hdc) 
 wglMakeCurrent Pannel.hdc, hrc 
 InitGL
 ResizeGLScene Pannel, 4000, 4000, 4000 
End Sub

Private Sub InitGL()‘绘图场景初始化
     glShadeModel smSmooth
     glClearColor 0, 0, 0, 0
     glClearDepth 1
     glEnable glcDepthTest
     glDepthFunc cfLEqual    
     glHint htPerspectiveCorrectionHint, hmNicest
     Lighting 
End Sub

Private Sub Lighting()‘光照渲染
Dim Specular(0 To 3) As GLfloat
Specular(0) = 0.5: Specular(1) = 1.5: Specular(2) = 2.5: Specular(3) = 3.5
 glMaterialf faceFrontAndBack, Shininess, 0.5  
 glMaterialf faceFrontAndBack, mprSpecular, Specular(0)
 glMaterialf faceFrontAndBack, AmbientAndDiffuse, 0
 glEnable glcColorMaterial
 glLightf ltLight0, lpmPosition, -100  
 glEnable glcLighting
 glEnable glcLight0
End Sub

 Public Sub DrawPart()‘绘制部件
    glMatrixMode mmModelView
    glLoadIdentity
    Select Case isfrontview
        Case True
            gluLookAt 0, 0, 0, 0, -1, 0, 1, 0, 0     
        Case False        
            gluLookAt 0, 0, 0, 0, 0, -1, 0, 1, 0
    End Select
  Select Case zoomcounter
        Case 1.5
            glScalef 1.5, 1.5, 1.5
        Case 2
            glScalef 2, 2, 2
        Case 2.5
            glScalef 2.5, 2.5, 2.5
        Case 3
            glScalef 3, 3, 3
  End Select
  glTranslatef gpQuadX, 1000, -800
  glRotatef grQuadX, 1, 0, 0 
  glRotatef grQuadY, 0, 1, 0
  glRotatef grQuadZ, 0, 0, 1
  DrawPartList
End Sub

Private Sub DrawPartList()‘以三角形的方式绘制
 Dim i As Integer
 Dim Temp As Integer
 Dim TrangleCounter As Integer
 TrangleCounter = CInt((PartVertexCounter - 1) / 3)
 glColor3f PartColor.R, PartColor.G, PartColor.B
 glBegin bmTriangles
  For i = 1 To TrangleCounter
     Temp = (i - 1) * 3 + 1
     glVertex3f Abs_PartVertex(Temp).x, Abs_PartVertex(Temp).y, Abs_PartVertex(Temp).z
     glVertex3f Abs_PartVertex(Temp + 1).x, Abs_PartVertex(Temp + 1).y, Abs_PartVertex(Temp + 1).z
     glVertex3f Abs_PartVertex(Temp + 2).x, Abs_PartVertex(Temp + 2).y, Abs_PartVertex(Temp + 2).z
  Next i
 glEnd
End Sub


  • 写回答

1条回答 默认 最新

  • hgameaaa 2018-08-19 02:58
    关注

    gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);
    glutLookAt(眼睛的位置,眼睛看的位置,世界坐标正方向)
    世界正方向为0,1,0
    改变gluLookAt的参数,调整镜头方向就可以了

    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划