Hi.Ich nutze VisualBasic 2013 mit OpenTK + Tao.OpenGl
Ich baue eine kleine 3D (Stadt Platform) es Funktioniert fast alles ADD,Lösch,Picking,Bewegen.
Habe noch ein Youtupe Video wenn es jemanden interessiert
Problem ist :
Ich möchte gerne die OpenGL Buffer werte ändern ohne alles neu zu binden
Im Internet ist nichts in VB mit Opengl zu finden
------------
beispiel 1:
Vertices(200000) und UV(200000) ' laufen beide Parallel Extra Dim(Vertex(1, 1, 1)),UV(1, 1)
Vertices 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...-> 200.000
Ich möchte gerne die Vertices,UV Zahl von 5 bis 8 zu ändern, ohne den Buffer
zu Löschen und ohne alles neu zu Binden wenn mann 200.000 Vertices Zahlen voll hat zieht das an der Engine
----------------------------
beispiel 2:
Button1, ist der es die Vertices,uv Füllen tut
Button2, ist der ein teil nullen tut
gegeben ist :
Public indexBufferId2As UInteger
Public vertexBufferId2As UInteger
Public Textbuffer2 As UInteger
Public Vertices(200000) As Vertex
Public uv(200000) As Vector2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For A = 1 To 200000 Step 1
Vertices(a) = New Vertex(1, 1, 1)
uv(a) = New Vector2(1, 1)
Next
Try
GL.DeleteBuffers(1, indexBufferId2)
GL.DeleteBuffers(1, Textbuffer2)
GL.DeleteBuffers(1, vertexBufferId2)
Catch ex As Exception
End Try
Dim indices2() As UShort = {0, 1, 2, 3}
GL.GenBuffers(1, indexBufferId2)
GL.BindBuffer(BufferTarget.ElementArrayBuffer, indexBufferId2)
GL.BufferData(BufferTarget.ElementArrayBuffer, New IntPtr(indices2.Length * BlittableValueType.StrideOf(indices2)), indices2, BufferUsageHint.StaticDraw)
GL.GenBuffers(1, vertexBufferId2)
GL.BindBuffer(BufferTarget.ArrayBuffer, vertexBufferId2)
GL.BufferData(BufferTarget.ArrayBuffer, New IntPtr(Vertices2.Length * BlittableValueType.StrideOf(Vertices2)), Vertices2, BufferUsageHint.StaticDraw)
GL.GenBuffers(1, Textbuffer2)
GL.BindBuffer(BufferTarget.ArrayBuffer, Textbuffer2)
GL.BufferData(BufferTarget.ArrayBuffer, New IntPtr(uv2.Length * BlittableValueType.StrideOf(uv2)), uv2, BufferUsageHint.StaticDraw)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
For A = 5 To 8 Step 1
Vertices(a) = New Vertex(0, 0, 0)
uv(a) = New Vector2(0, 0)
Next
' Gibts es nicht was mit UNLOCK mit Vertices+ UV
' IN Internet , Bücher finde ich nichts was auf VB mit OpenGL basiert
' Die sollen genullt werden zum neu beschreiben
End Sub
CustomVertex ? gibt es nicht sagt er ! Vertex und UV laufen in einer Extra Dimension bei mir
Dim vertex As CustomVertex.PositionColored() = _
CType(VertexBuf.Lock(0, LockFlags.None), CustomVertex.PositionColored())
vertex(0) = New CustomVertex.PositionColored(0, 1, 0, Color.Blue.ToArgb)
vertex(1) = New CustomVertex.PositionColored(1, -1, 0, Color.Red.ToArgb)
vertex(2) = New CustomVertex.PositionColored(-1, -1, 0, Color.Green.ToArgb)
VertexBuf.Unlock()
---------------------------------------
Frage 2: nur wenn frage 1 nicht lösbar ist
Wie kann ich ein 2 stelliges Arry binden ohne 2 mal abzufragen ?
Dim Vertices2(100,8000)
Dim Block as integer = Straße
Dim X as integer = Haus
Chunk = 1
GL.GenBuffers(1, vertexBufferId2(Chunk))
GL.BindBuffer(BufferTarget.ArrayBuffer, vertexBufferId2(Chunk))
GL.BufferData(BufferTarget.ArrayBuffer, New IntPtr(Vertices2(Block,X).Length * BlittableValueType.StrideOf(Vertices2(Block,X)), Vertices2(Block,X), BufferUsageHint.StaticDraw
So geht das auch nicht
Vielen Dank für durchlesen
Ich baue eine kleine 3D (Stadt Platform) es Funktioniert fast alles ADD,Lösch,Picking,Bewegen.
Habe noch ein Youtupe Video wenn es jemanden interessiert
Problem ist :
Ich möchte gerne die OpenGL Buffer werte ändern ohne alles neu zu binden
Im Internet ist nichts in VB mit Opengl zu finden
------------
beispiel 1:
Vertices(200000) und UV(200000) ' laufen beide Parallel Extra Dim(Vertex(1, 1, 1)),UV(1, 1)
Vertices 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...-> 200.000
Ich möchte gerne die Vertices,UV Zahl von 5 bis 8 zu ändern, ohne den Buffer
zu Löschen und ohne alles neu zu Binden wenn mann 200.000 Vertices Zahlen voll hat zieht das an der Engine
----------------------------
beispiel 2:
Button1, ist der es die Vertices,uv Füllen tut
Button2, ist der ein teil nullen tut
gegeben ist :
Public indexBufferId2As UInteger
Public vertexBufferId2As UInteger
Public Textbuffer2 As UInteger
Public Vertices(200000) As Vertex
Public uv(200000) As Vector2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For A = 1 To 200000 Step 1
Vertices(a) = New Vertex(1, 1, 1)
uv(a) = New Vector2(1, 1)
Next
Try
GL.DeleteBuffers(1, indexBufferId2)
GL.DeleteBuffers(1, Textbuffer2)
GL.DeleteBuffers(1, vertexBufferId2)
Catch ex As Exception
End Try
Dim indices2() As UShort = {0, 1, 2, 3}
GL.GenBuffers(1, indexBufferId2)
GL.BindBuffer(BufferTarget.ElementArrayBuffer, indexBufferId2)
GL.BufferData(BufferTarget.ElementArrayBuffer, New IntPtr(indices2.Length * BlittableValueType.StrideOf(indices2)), indices2, BufferUsageHint.StaticDraw)
GL.GenBuffers(1, vertexBufferId2)
GL.BindBuffer(BufferTarget.ArrayBuffer, vertexBufferId2)
GL.BufferData(BufferTarget.ArrayBuffer, New IntPtr(Vertices2.Length * BlittableValueType.StrideOf(Vertices2)), Vertices2, BufferUsageHint.StaticDraw)
GL.GenBuffers(1, Textbuffer2)
GL.BindBuffer(BufferTarget.ArrayBuffer, Textbuffer2)
GL.BufferData(BufferTarget.ArrayBuffer, New IntPtr(uv2.Length * BlittableValueType.StrideOf(uv2)), uv2, BufferUsageHint.StaticDraw)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
For A = 5 To 8 Step 1
Vertices(a) = New Vertex(0, 0, 0)
uv(a) = New Vector2(0, 0)
Next
' Gibts es nicht was mit UNLOCK mit Vertices+ UV
' IN Internet , Bücher finde ich nichts was auf VB mit OpenGL basiert
' Die sollen genullt werden zum neu beschreiben
End Sub
CustomVertex ? gibt es nicht sagt er ! Vertex und UV laufen in einer Extra Dimension bei mir
Dim vertex As CustomVertex.PositionColored() = _
CType(VertexBuf.Lock(0, LockFlags.None), CustomVertex.PositionColored())
vertex(0) = New CustomVertex.PositionColored(0, 1, 0, Color.Blue.ToArgb)
vertex(1) = New CustomVertex.PositionColored(1, -1, 0, Color.Red.ToArgb)
vertex(2) = New CustomVertex.PositionColored(-1, -1, 0, Color.Green.ToArgb)
VertexBuf.Unlock()
---------------------------------------
Frage 2: nur wenn frage 1 nicht lösbar ist
Wie kann ich ein 2 stelliges Arry binden ohne 2 mal abzufragen ?
Dim Vertices2(100,8000)
Dim Block as integer = Straße
Dim X as integer = Haus
Chunk = 1
GL.GenBuffers(1, vertexBufferId2(Chunk))
GL.BindBuffer(BufferTarget.ArrayBuffer, vertexBufferId2(Chunk))
GL.BufferData(BufferTarget.ArrayBuffer, New IntPtr(Vertices2(Block,X).Length * BlittableValueType.StrideOf(Vertices2(Block,X)), Vertices2(Block,X), BufferUsageHint.StaticDraw
So geht das auch nicht
Vielen Dank für durchlesen