VB。NET Opengl和纹理[英] VB.NET Opengl and Textures

本文是小编为大家收集整理的关于VB。NET Opengl和纹理的处理方法,想解了VB。NET Opengl和纹理的问题怎么解决?VB。NET Opengl和纹理问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

大家好,

我想做的是:
1)创建一个多边形,创建一个纹理并将其应用到多边形.

接下来当我想画一条线时,是一条连续的线,我每次都需要重新绘制场景.

我还需要重新绘制多边形吗???因为如果我不这样做,它就不会出现在场景中,如果我这样做,那么线条绘制就会变得非常缓慢.

附上代码:

Private Sub Form1_MouseDown(ByVal 发送者 As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles .MouseDownIf e.Button = MouseButtons.Left 然后绘画 = TrueIf startingPoint.X = 0 And startingPoint.Y = 0 然后起始点 = PointToScreen(e.Location)结束 如果结束 如果结束 Private Sub Form1_MouseMove(ByVal 发件人 As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMoveIf (绘画) 那么endPoint = PointToScreen(e.Location)Gl.glClear(Gl.GL_COLOR_BUFFER_BIT)Gl.glMatrixMode(Gl.GL_PROJECTION)gl.glLoadIdentity()gl.glViewport(0, 0, .Width, .Height)Glu.gluOrtho2D(0, Me.Width, Me.Height, 0)Gl.glPushMatrix()For Each l As line  lineListl.drawLine()下一个gl.glColor3f(0, 100, 0)'用它来给线宽'Gl.glLineWidth(10.0F)'使用下面的语句启用点画 --Gl.glLineStipple(1, &H101)Gl.glEnable(Gl.GL_LINE_STIPPLE)Gl.glBegin(Gl.GL_LINES)Gl.glVertex2f(起始点.X,起始点.Y)Gl.glVertex2f(endPoint.X, endPoint.Y)Gl.glEnd()'使用下面的语句禁用之前绘制的线条的点画效果Gl.glDisable(Gl.GL_LINE_STIPPLE)img.imgFile = "D:\\Desert.jpg"img.generateTexture()GL.glPopMatrix()GL.glFlush()Gdi.SwapBuffers(hDc)结束 如果结束 Private Sub Form1_MouseUp(ByVal 发件人 As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUpIf (绘画) 那么绘画 = False'endPoint = e.LocationDim obj As 新建行obj.setStart = 起始点obj.setEnd = endPointlineList.Add(obj)起点 = 终点结束 如果End Sub

推荐答案

每帧都需要重绘纹理和线条.

Gl.glDisable(Gl.GL_LINE_STIPPLE)img.imgFile = "D:\\Desert.jpg"img.generateTexture()


每次鼠标移动都需要纹理加载吗?

通常重绘纹理和线条不会造成渲染缓慢.

如果有任何与鼠标移动无关的处理,并且需要很长时间,那么我们可以使用中间纹理来保存繁重任务的输出.对于每一帧,我们都可以用线条画出纹理.

本文地址:https://www.itbaoku.cn/post/1356208.html

相关标签/搜索