[英]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.