Tag: c++

Entries for tag "c++", ordered from most recent. Entry count: 152.

Uwaga! Informacje na tej stronie mają ponad 6 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

Pages: > 1 ... 15 16 17 18 19 >

# Hello Scene !

Mon
24
Sep 2007

Poczytałem trochę o demoscenie i napisałem swoje pierwsze intro 4k. Nie jest wprawdzie zbyt ambitne, bo pokazuje tylko trójkąt, ale na początek dobre i to :) Najlepsze, że zajmuje tylko 1082 bajty. Do pobrania: HelloScene.exe.

Comments | #demoscene #c++ #rendering Share

# Własne słowa kluczowe w Visual C++

Wed
19
Sep 2007

Chcesz, żeby edytor w Visual C++ podświetlał jakieś twoje dodatkowe identyfikatory jako słowa kluczowe? Da się zrobić. Wystarczy:

  1. Zlokalizować katalog, w którym masz zainstalowany Visual.
  2. Wejść do podkatalogu Common7\IDE.
  3. Utworzyć tam plik tekstowy o nazwie usertype.dat.
  4. Wpisać do tego pliku jeden pod drugim identyfikatory, które chcesz podświetlić.

Jakie słowa wpisać? Na przykład twoje lub nie twoje nazwy najczęściej używanych typów (string, DWORD, uint16 itp.) albo makr. Pewnie masz wiele swoich pomysłów.

Comments | #visual studio #c++ Share

# Zlib i jego interfejs

Tue
28
Aug 2007

Zlib to biblioteka do kompresji danych. Zdawało by się, że jest prosta - jej zasadniczą funkcjonaloność, czyli kompresję albo dekompresję kawałka pamięci wykonuje się używając jednej prostej funkcji. Okazuje się jednak, że poprawne używanie tej funkcji jest nie lada sztuką, a jej objaśnienie wypełnia całkiem niekrótki artykuł (ze względu na różne przypadki szczególne i tak nie do końca). Choć taki a nie inny wygląd tej funkcji ma swoje uzasadnienie w sposobie, w jaki działa, to wg mnie możnaby go podawać jako książkowy przykład jak *nie* należy projektować interfejsu biblioteki.

Jeśli ktoś, zamiast usiłować zrozumieć zasadę działania funkcji inflate i deflate, chce zobaczyć jak obudować te funkcje w wygodne klasy strumieni, może podpatrzeć kod modułu ZlibUtils z mojej biblioteki CommonLib 6.1. Szczegóły:

Comments | #c++ #libraries Share

# Sortowanie wg typu

Fri
17
Aug 2007

Mamy wektor wskaźników na obiekty różnych typów dziedziczących ze wspólnej klasy bazowej. Jak posortować go wg typu? Właśnie wymyśliłem, że do porównywania elementów wektora można wtedy użyć takiego uniwersalnego funktora:

template <typename T>
struct TypeCompare
{
  bool operator () (const T *o1, const T *o2)
  {
    return &typeid(*o1) < &typeid(*o2);
  }
};

Przykładowy program: Sortowanie_wg_typu.cpp.

Comments | #c++ #algorithms Share

# Rozwiązania dla relacji zawierania

Sat
04
Aug 2007

Innym problemem projektowym jest realizacja wszelkiego rodzaju kontenerów przechowujących jakieś elementy, np. Scena przechowuje Encje, Światła, Materiały, Manager Zasobów przechowuje Zasoby itp.


Autor diagramu: Xion

Comments | #c++ Share

# Compile (Ctrl+F7)

Tue
17
Jul 2007

To drobiazg, pewnie każdy o nim wie. Jeśli by ktoś jednak nie wiedział, warto się dowiedzieć, że w Visual C++ bardzo przydatne jest polecenie Compile (Ctrl+F7). Kompiluje tylko bieżący plik CPP, a nie cały projekt. Dzięki temu możesz szybko sprawdzić, czy napisany kod się kompiluje bez błędów i...

Odkryłem to polecenie już dawno temu, ale dopiero teraz uświadomiłem sobie, że jego potęga wcale nie musi być taka oczywista na pierwszy rzut oka.

Comments | #visual studio #c++ Share

# Nigdy nie ufaj optymalizacji kompilatora

Sat
30
Jun 2007

Xion widząc kod mojej biblioteki CommonLib zarzucił mi dzisiaj, że niepotrzebnie przesyłam wszelkie zwracane przez funkcje obiekty większe niż pojedyncza liczba (jak wektor, macierz czy string) przez parametr wskaźnikowy nie ufając optymalizacji kompilatora (nazwał to RVO - Return Value Optimization). Zrobiłem więc na szybko prosty test na przykładzie stringów i wyniki potwierdziły mój pogląd, żeby nigdy nie ufać optymalizacjom kompilatora. Zobacz kod i wyniki: TestNieoptymalizacjiKompilatora.cpp.

Może dożyję czasów, kiedy kompilatory C++ (albo lepiej - jakiegoś nowocześniejszego języka) pozwolą napisać po prostu return wektor * macierz1 * macierz2 albo return string1 + string2, a to zostanie zamienione na taki kod maszynowy, jaki napisałby dobry programista posługujący się bezpośrednio liczbami float albo łańcuchami char*. Przykład kompilatorów HLSL i Cg pokazuje, że da się...

Comments | #c++ #algorithms Share

# Napisałem FreeList

Thu
31
May 2007

Napisałem na podstawie artykułów z "Game Programming Gems" (oraz swoich pomysłów) własne alokatory pamięci do obiektów konkretnego typu, czyli tzw. FreeList. Powinny działać szybciej niż standardowe, podobno wolne operatory new i delete. Znajdą się oczywiście w nowej wersji mojej biblioteki CommonLib. Testy (przeprowadzone dla 10240 operacji alokacji lub zwalniania) są bardzo optymistyczne:

DEBUG:
Element typu int:
  FreeList : 68.0636 ms
  DynamicFreeList : 184.441 ms
  new i delete : 78.8142 ms
Element typu zajmujacego 1024 bajty:
  FreeList : 69.3896 ms
  DynamicFreeList : 203.506 ms
  new i delete : 93.2942 ms
RELEASE:
Element typu int:
  FreeList : 7.87224 ms
  DynamicFreeList : 11.4786 ms
  new i delete : 17.0348 ms
Element typu zajmujacego 1024 bajty:
  FreeList : 9.18059 ms
  DynamicFreeList : 18.0729 ms
  new i delete : 24.0537 ms

Comments | #c++ #algorithms Share

Pages: > 1 ... 15 16 17 18 19 >

[Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2026