OpenTK (OpenGL) в VB .NET - PullRequest
       3

OpenTK (OpenGL) в VB .NET

0 голосов
/ 17 февраля 2012

Я пытался узнать, как сделать openGL в среде VB .NET, и кажется, что рекомендуется использовать инфраструктуру Tao или OpenTK с рекомендацией OpenTK с более высокой рекомендацией, поэтому я решил попробовать ее.

Поскольку я новичок в этом, я пытаюсь просто нарисовать простую коробку, треугольник или что-нибудь еще, чтобы я мог понять все это, прежде чем делать более сложные вещи.До сих пор мне это не удавалось, поэтому я перечислю по порядку, что я уже сделал, и, надеюсь, кто-то здесь может помочь мне исправить это или предоставить новый пример, чтобы я мог нарисовать простую фигуру.

1) Я установил OpenTK с помощью opentk-2010-10-06.exe

2) В новом проекте я добавил ссылки на OpenTK.dll и OpenTK.Compatibility.dll

3) Я добавил элемент управления (opentk.glcontrol.dll)

4) Я добавил действующий элемент управления в форму.

Используя некоторые примеры в Интернете, я добавил остальные:

5) Я написал свои ссылки в:

Imports OpenTK
Imports OpenTK.GLControl
Imports OpenTK.Platform
Imports OpenTK.Graphics.OpenGL
Imports System.Math

6) Моя глобальная переменная:

 Dim _STARTED As Boolean = False

7) Я написал свои события:

ПриватSub GlControl1_Resize (ByVal sender As Object, ByVal e As System.EventArgs) Обрабатывает GlControl1.Resize _STARTED = True ResizeGL () End Sub

Private Sub ResizeGL()
    GL.Viewport(0, 0, GlControl1.Width, GlControl1.Height)
    GL.MatrixMode(MatrixMode.Projection) ' Select The Projection Matrix
    GL.MatrixMode(MatrixMode.Modelview) ' Select The Modelview Matrix
    GL.LoadIdentity() ' Reset The Modelview Matrix
End Sub


Public Sub ViewPerspective() ' Set Up A Perspective View

    GL.MatrixMode(MatrixMode.Projection) ' Select Projection
    GL.LoadIdentity() ';    
    Dim perspective1 As Matrix4 = OpenTK.Matrix4.CreatePerspectiveFieldOfView(MathHelper.PiOver4, _
                                         CSng((GlControl1.Width) / (GlControl1.Height)), 0.1, 1000)
    GL.LoadMatrix(perspective1)
    GL.MatrixMode(MatrixMode.Modelview) ' Select The Modelview Matrix
    GL.LoadIdentity() ' Reset The Matrix
    GL.Enable(EnableCap.DepthTest) ' This doesnt need to be here but.. If your using the Z buffer.. It dont hurt.

End Sub


Public Sub ViewOrtho()
    GL.MatrixMode(MatrixMode.Projection) 'Select Projection
    GL.LoadIdentity() ' Reset The Matrix
    GL.Ortho(0, GlControl1.Width, -GlControl1.Height, 0, 0.1, 100.0) ' Select Ortho Mode
    GL.MatrixMode(MatrixMode.Modelview) ' Select Modelview Matrix
    GL.LoadIdentity() ' Reset The Matrix
End Sub

8) Наконец, я попытался вызвать их:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ViewOrtho()
End Sub

Приведенное выше не приводит к отображению, поэтому любая помощь будет принята с благодарностью.

Даже если вы не знаете полное решение, любой ответ будет хорошим.

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Пожалуйста, опубликуйте свой код рендеринга (т.е. вы обработчик события Paint).Код, который вы опубликовали, устанавливает матрицу видового экрана и проекции OpenGL, но на самом деле не отображает ничего.

0 голосов
/ 25 февраля 2012

Я решил свой собственный вопрос: p Я создал класс-обертку, чтобы я мог рисовать некоторые примитивы на основе входных данных, которые должны позволить мне рисовать много вещей: круг, многоугольник, треугольник и текст.1002 *

...