首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Gambas3中使用opengl绘制直线

如何在Gambas3中使用opengl绘制直线
EN

Stack Overflow用户
提问于 2014-12-13 16:07:47
回答 1查看 981关注 0票数 0

我在Gambas中创建了一个带有组件的项目: gb.opengl和gb.opengl.glu。

对于NeHe教程,我有以下代码:(glArea1是opegl应用程序的表单组件。)

代码语言:javascript
复制
Public Sub GLArea1_Open()

  gl.ClearDepth(100.0)
  Gl.ClearColor(20, 40, 20, 0.70)
  Gl.DepthFunc(Gl.LESS)             ' The type of depth test to do
  Gl.Enable(Gl.DEPTH_TEST)          ' Enables depth testing

End

Public Sub GLArea1_Draw()


  gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT)    
  ' Clear The Screen And The Depth Buffer

  gl.Viewport(0, 0, GLArea1.Width, GLArea1.Height)
  gl.MatrixMode(Gl.PROJECTION)
  gl.LoadIdentity()           'Reset The Projection Matrix

  gL.Translatef(0, GLArea1.Width / 2, 0)
  gl.LineWidth(1.0)
  gl.begin(gl.LINES)
  gl.Color3f(1.0, 1.0, 0.2)
  gl.Vertex3f(0, GLArea1.Height / 2, 0)
  gl.Vertex3f(GLArea1.Width / 2, GLArea1.Height / 2, 0)

 gl.End()


End

我希望这段代码会画一条线,但是屏幕仍然是空白的。附加了源归档文件:http://www.filedropper.com/glline-001tar

如何在gambas 3中drAw openGl区域中的线路?更具体地说,我想从绘制视口中的轴开始。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2014-12-13 19:25:49

您的顶点很可能位于屏幕之外。如果未设置投影,则可见坐标范围为-1、-1到1,1。

也许混淆来自对gl.Viewport的调用,但这不会改变可见区域。通常,在应用所有变换和投影之后,将得到所谓的归一化设备坐标(NDC)。这些坐标的范围从-1,-1,-1到1,1,1。在这个空间中,现在发生裁剪,并丢弃有效范围之外的所有内容。现在将视口变换应用于NDC,以获得最终像素坐标。

在您的例子中,您可以做两件事:您可以在NDC中指定您的行(每个轴上为-1-1),或者您可以使用orthographic projection

另一个通用评论:如果对使用的OpenGL版本没有限制,你绝对不应该使用固定的函数管道(用glBegin/...绘制)因为这个方法已经被弃用了。您可能需要查找OpenGL > 3.2核心配置文件教程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27456831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档