Letní akce PHP týden
Pouze tento týden sleva až 80 % na kurzy PHP. Lze kombinovat s akcí Letní slevy na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
jklasdf
Člen
Avatar
jklasdf:16. dubna 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. dubna 16:46
Avatar
JerryM
Člen
Avatar
JerryM:17. dubna 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. dubna 13:11
Avatar
jklasdf
Člen
Avatar
jklasdf:17. dubna 20:11

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

 
Nahoru Odpovědět 17. dubna 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.