Java týden
30 % bodů zdarma na online výuku díky naší Slevové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se Javy.

Diskuze: Nenakreslené některé body v SharpGL

Aktivity (4)
Avatar
jklasdf
Člen
Avatar
jklasdf:16.4.2019 16:46

Dobrý den.
Kreslím v SharpGL body skoro přes celou obrazovku, ale jsou místa, kde se mně body nevykreslí. Vypadá to jako čtyři úsečky. Nevím, kde může být chyba, jestli je to bug SharpGL, nebo čím by to mohlo být.

Tu je zdrojový kód:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using SharpGL;

namespace Zkůška
{
    /// <summary>
    /// Interakční logika pro MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        bool kresli = false;
        public MainWindow()
        {
            InitializeComponent();

        }

        private void OpenGLControl_OpenGLDraw(object sender, SharpGL.SceneGraph.OpenGLEventArgs args)
        {
            if (kresli == true)
            {
                OpenGLControl.Visibility = Visibility.Visible;
                //  Get the OpenGL instance that's been passed to us.
                OpenGL gl = args.OpenGL;

                //  Clear the color and depth buffers.
                gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

                //  Reset the modelview matrix.
                gl.LoadIdentity();

                gl.Color(1, 0.5, 0);
                gl.Begin(OpenGL.GL_POINTS);
                int j = 0;
                for (int i = 0; i < 1596; i++)
                {
                    if (i == 1595 & j < 1596)
                    {
                        j++;
                        i = 0;
                    }
                    gl.Vertex(i, j);
                }
                gl.Flush();
                gl.End();
                kresli = false;
                Okno1.Title = "kreslím";
            }
        }

        private void OpenGLControl_Resized(object sender, SharpGL.SceneGraph.OpenGLEventArgs args)
        {
            //  Get the OpenGL object.
            OpenGL gl = OpenGLControl.OpenGL;

            gl.Viewport(0, 0, 1595, 1000);

            //  Set the projection matrix.
            gl.MatrixMode(OpenGL.GL_PROJECTION);

            //  Load the identity.
            gl.LoadIdentity();

            gl.Ortho(0, 1595, 0, 1000, -30, 80);

            gl.LookAt(0.0f, 0.0f, 80.0f,                // bod, odkud se kamera diva
              0.0f, 0.0f, -20.0f,                // bod, kam se kamera diva
              0.0f, 1.0f, 0.0f);
        }

        private void OpenGLControl_OpenGLInitialized(object sender, SharpGL.SceneGraph.OpenGLEventArgs args)
        {
            //  Get the OpenGL object.
            OpenGL gl = OpenGLControl.OpenGL;

            //  Set the clear color.
            gl.ClearColor(0.8f, 0.8f, 0.8f, 1);
            //gl.ClearColor(1f, 0.5f, 0,1f);
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            kresli = true;
            OpenGLControl.OpenGLDraw += OpenGLControl_OpenGLDraw;
        }
    }
}

Tu je XAML:

<Window x:Class="Zkůška.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:sharpGL="clr-namespace:SharpGL.WPF;assembly=SharpGL.WPF"
        xmlns:local="clr-namespace:Zkůška"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" Name="Okno1">
    <Grid>
        <sharpGL:OpenGLControl Name="OpenGLControl"
                               OpenGLInitialized="OpenGLControl_OpenGLInitialized"
                               Resized="OpenGLControl_Resized"
                               OpenGLDraw="OpenGLControl_OpenGLDraw"
                               DrawFPS="True"
                               Visibility="Hidden"/>
        <Button Content="Button" HorizontalAlignment="Left" Height="24" Margin="55,30,0,0" VerticalAlignment="Top" Width="84" Click="Button_Click"/>
    </Grid>
</Window>

Poraďte.

 
Odpovědět
16.4.2019 16:46
Avatar
JerryM
Člen
Avatar
JerryM:17.4.2019 13:11

nevim přesně co je SharpGL, ale jde o to, jestli to vubec funguje :)
zkus místo toho použít SharpDX nebo SlimDX tam je záruka, že to bude fungovat a nejsou chyby v enginu .... nicméně ideální na 2D hry je ted Unity ale umí i 3D a samozřejmě native DirectX 9,10,11,12

 
Nahoru Odpovědět
17.4.2019 13:11
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
jklasdf
Člen
Avatar
jklasdf:17.4.2019 20:11

SharpGL je OpenGL knihovna pro c#. Díky za tipy.

 
Nahoru Odpovědět
17.4.2019 20:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.