Kategoria: .NET
Wysłany dnia 18 sierpnia 2010 o godzinie 15:47. Skomentuj!, kategorie: .NET, Kingdoms Clash.NET, Programowanie , tagi: .

No dobra, nie pierwsze tylko trzecie w moim wypadku, ale poprzednie się nie liczą, bo skończyło się na utworzeniu najprostszego okna :P

Czym jest OpenTK? Jest to binding OpenGL, OpenAL i OpenCL pod .NET. Aktualnie jest w wersji 1.0 RC1 i obsługuję Otwarty GL w wersji 3.2, OpenAL
1.1 i OpenCL 1.0. Do tego posiada dość rozbudowaną bibliotekę matematyczną(która mam nadzieję wystarczy mi) obsługującą wektory, macierze, kwaterniony i struktury opisujące krzywe Béziera.

Posiada kilka klas-kontrolek, które ułatwiają integracje z już istniejącymi programami, np. GLControl dla Windows Forms, GLWidget dla GTK# i, podobno, kontrolkę dla WPF(lecz ja jej nie znalazłem).

Dla gier stworzona jest specjalna klasa GameWindow – całe okno jest przeznaczone tylko dla OpenGL, daje to nam najlepszą wydajność i usuwa zbędne rzeczy ze „zwykłych” form. To właśnie jej będę używał i to ją szerzej opiszę w dzisiejszym poście. Czytaj dalej…

Wysłany dnia 13 sierpnia 2010 o godzinie 00:46. Skomentuj!, kategorie: .NET, Kingdoms Clash.NET, Programowanie , tagi: , .

Postanowiłem sobie odpocząć od „projektowania” silnika(jeśli można to nazwać projektowaniem… ;) ) i napisać klasę, która będzie mi udostępniać podstawowe informacje o komputerze i systemie operacyjnym, np.:

  • wersję SO
  • wersję CLR
  • nazwę procesora, jego taktowanie i liczbę rdzeni
  • ilość zainstalowanej pamięci RAM
  • model karty graficznej, jej pamięć i wersję sterowników

Gdy pisałem coś podobnego w C++ do pobrania informacji o procesorze używałem asemblera i instrukcji cpuid, tutaj „nie ma tak dobrze”. Do pobrania informacji o karcie graficznej używałem OpenGL i glGetString, lecz zdobywałem ich tyle co kot napłakał.

Po krótkim poszukiwaniu dowiedziałem się jak to pobrać – WMI(i System.Environment ;) ). Czytaj dalej…

Wysłany dnia 09 sierpnia 2010 o godzinie 15:00. Komentarzy: 3, kategorie: .NET, Kingdoms Clash.NET, Programowanie , tagi: , .

Już od dłuższego czasu przymierzałem się do poznania tej techniki tworzenia oprogramowania. Zawsze gdy tworzyłem oprogramowanie pisałem jakąś funkcjonalność i gdy uznałem, że to co napisałem działa przynajmniej w części tak jak powinno zabierałem się do testowania. I testowałem, testowałem, debugowałem, testowałem… Czasami na przetestowanie i poprawę, często głupich, błędów potrzeba było o wiele więcej czasu niż na „pierwszą implementację”(która zawsze wydaje się najtrudniejsza). Postanowiłem w końcu „coś z tym zrobić”. A nuż się uda i testowanie nie będzie takie męczące? :) Czytaj dalej…

Wysłany dnia 13 lipca 2010 o godzinie 14:56. Komentarzy: 3, kategorie: .NET, Programowanie , tagi: , , .

Niedawno musiałem wyszukać jakiś program/bibliotekę do tworzenia raportów pod .NET(obsługującą SQL Server 2008). Pierwsze co mi przyszło na myśl to Crystal Reports – jest to rozwiązanie najbardziej rozbudowane, ale płatne. Całe szczęście w SQL Server Express istnieje coś takiego jak Reporting Services. Po przejrzeniu możliwości stwierdziłem, że ma wszystko to czego potrzebuję(z wyłączeniem integracji z VC# EE, ale do tego się przyzwyczaiłem).

Po aktualizacji mojej lokalnej wersji MSSQL do wersji 2008 R2, doinstalowaniu Advanced Services(co łatwe nie było, instalator jest mało intuicyjny) i skonfigurowaniu usługi raportów przystąpiłem do stworzenia testowego raportu. Dość prosty(i aktualny!) video kurs dla laików o tworzeniu raportów jest na Technecie. Raporty w BIDS tworzy się przyjemnie, opublikowanie ich w RS też większych problemów mi nie sprawiło(oprócz nadania uprawnień dla użytkownika, ale co było przyczyną nadal nie wiem, w Firefoxie dostęp do raportów z mojego konta działa, w IE – nie).

Nadszedł czas na uzyskanie dostępu do raportów po stronie aplikacji. Tutaj mamy do dyspozycji dwa Web Services(cztery, ale trzy prawie że niczym się nie różnią) – jeden do zarządzania usługą raportowania(ReportingService2005/2006/2010) i drugą do „wykonywania” raportów(ReportExecution2005). Pierwsza pozwala nam na listowanie, dodawanie, usuwanie, edycję raportów, zmianę uprawnień i inne czynności administracyjne – więcej informacji na MSDN. ReportExecutionService pozwala na renderowanie raportów, wyszukiwanie informacji w nich itp. (po więcej odsyłam do MSDN). Renderowanie raportów jest bajecznie proste. Wystarczy załadować raport, ewentualnie ustawić parametry dla raportu i… wyrenderować go! Całość można zamknąć w kilku linijkach kodu:

ReportExecutionService svc = new ReportExecutionService();
svc.Credentials = System.Net.CredentialCache.DefaultCredentials;
svc.LoadReport(PathToReport, null);
svc.SetExecutionParameters(new ParameterValue[] { new ParameterValue() { Name = "ID", Value = "5" } }, ""); //Przykładowy parametr
string ext, mime, enc;
Renderer.Warning[] warns;
string[] streamIds;
//Pierwszy parametr to żądany format raportu(liste obsługiwanych formatów dostajemy metodą ListRenderingExtensions)
//Drugi to DeviceInfo - http://msdn.microsoft.com/en-US/library/ms155397(v=SQL.90).aspx
//Reszta to rozszerzenie, tym MIME i kodowanie formatu, potem ostrzeżenia renderowania i identyfikatory strumienia(patrz MSDN)
var report = svc.Render("PDF", "", out ext, out mime, out enc, out warns, out streamIds);

W zmiennej report dostajem PDF z wygenerowanym raportem.