簡體   English   中英

如何使用opengl在Gambas3中畫一條線

[英]How to draw a line in Gambas3 using opengl

我已經在Gambas中創建了一個項目,其組件為:gb.opengl和gb.opengl.glu。

在NeHe教程之后,我有以下代碼:(glArea1是opegl應用程序的表單組件。)

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的openGl區域中繪制drAw線? 更具體地說,我想從在視口中繪制軸開始。 請幫忙。

頂點很可能在屏幕之外。 如果未設置投影,則可見坐標范圍為[-1,-1]至[1,1]。

也許混淆來自對gl.Viewport的調用,但這不會更改可見區域。 通常,在應用了所有的轉換和投影之后,即所謂的“標准化設備坐標(NDC)”,您便會得到。 這些坐標范圍從[-1,-1,-1]到[1,1,1]。 在此空間中,會發生削波,並丟棄所有超出有效范圍的東西。 現在將視口轉換應用於NDC,以獲取最終的像素坐標。

在您的情況下,您可以做兩件事:您可以在NDC中指定線(每條軸上為-1),也可以使用正交投影

另一個一般性評論:如果對使用的OpenGL版本沒有任何限制,則絕對不應再使用固定功能管道(使用glBegin / ...繪制),因為不贊成使用此方法。 您可能需要查找OpenGL> 3.2 Core Profile教程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM