İletileri Göster

Bu özellik size üyenin attığı tüm iletileri gösterme olanağı sağlayacaktır . Not sadece size izin verilen bölümlerdeki iletilerini görebilirsiniz


Konular - anesthetic

Sayfa: 1 [2] 3
16
pc / built-in olmayan temporaryler [cpp]
« : 19.07.2006 20:44:42 »
Bir soru daha..

Derleyici (msvc) built-in temporaryleri const olarak oluşturuyor. "int() = 3 ;"
gibi şeyler yazamıyorum (not an l-value). ıyi güzel hoş ama built-in olmayan, kendi oluşturduğum bi tipte bunu yapmıyor. "complex() = complex() ;" filan diyebiliyorum. Hatta "complex const() = complex() ;" de diyebiliyorum.

Çözüm için operator='in bi normal bi const versiyonunu yaptım. ılkini public, ikincisini private yaptığım zaman istediğim gibi çalışıyor. Bu durumda operator='e ihtiyaç duymasam bile (memberwise copy varken) =, +=, -=, *= vs bissürü member oluşturmam gerekiyor (ikişer tane). Kısaca çalışıyor ama şık değil.

Gerçi temporary'nin değiştirilmesi çok büyük bi sorun değil ama öyle bırakınca da bi şeyler eksik gibi hissediyorum.

Not: Sanmıyorum ama compiler hatası da olabilir bu. Çünkü şöyle bi şey kullandığımda çöküyor derleyici.
class A { public: A(int) {} ; } const(0) = 0 ;

Bu arada C++'ı tüm forumla birlikte öğreniyorum umarım kızmıyorsunuzdur :D

17
pc / headerlar ve namespaceler [cpp]
« : 14.07.2006 20:06:48 »
Bir de tasarım sorusu gelsin.

şimdi elimde konuları ortak olan bir kaç tane class var. Örneğin Graph ve Matrix olsun. bunları Math adlı bi componentta birleştirdim.

Graph.h
Kod: [Seç]
namespace Math
{
 class Graph
 {
 // ...
 };
}

Matrix.h
Kod: [Seç]
namespace Math
{
 class Matrix
 {
 // ...
 };
}

Math.h
Kod: [Seç]
#include "Matrix.h"
#include "Graph.h"
#include "Complex.h"
// ...

Sonra Math.h'ı eklediğimde tüm bu elemanları Math:: altında kullanıyorum.

Sorun şu: Aynı classları Math altında görmek istemediğim başka projeler var, örneğin diğerlerinden tamamen ayrı olarak sadece Matrix classını alıp projemde Space:: altında görmek istiyorum. Bunu sağlamak için dosyaları şöyle düzenliyorum:

Graph.h
Kod: [Seç]
class Graph
 // ...
};

Matrix.h
Kod: [Seç]
class Matrix
{
 // ...
};

Math.h
Kod: [Seç]
namespace Math
{
 #include "Matrix.h"
 #include "Graph.h"
 #include "Complex.h"
 // ...
}

Artık ister Math.h'ı ekleyip Math altında bi kaç classa sahip olucam, ister Matrix.h'ı direk ekleyip kullanıcam istersem de Space gibi başka bi component vasıtasıyla ulaşıcam (istediğim bu). Ama sorun şu ki eğer Matrix.h içinde başka namespaceler varsa (örneğin stl inclusiondan gelen std gibi) her şey karışıyor. Math::std:: gibi namespace'e sahip oluyorum ve stl headerları derlenmiyor.

Böyle bi sorunun çözümü varsa ne güzel ama bi türlü bulamadım. Sorunu çözecek alternatifler ya da class ve componentlar için daha iyi bi tasarım mevcutsa öğrenmekten memnun kalırım.

18
demoscene / Demovibes
« : 20.06.2006 07:33:45 »
http://willbe.planet-d.net/demovibes.htm (edit: http://www.demovibes.org/)

Demovibes son 10 yılın PC demolarının (ve birkaç tane de Amiga'dan) soundtracklerinden oluşan bir derleme. Her biri bir cdye sığacak (şimdilik) 5 albümden oluşuyor. ıçinde normal soundtrackler olduğu gibi 64klar için softsynthlerle üretilmiş parçalar da var (aranızda kaç kişi V2'nin sesine hayran bilmiyorum ama ben bayılıyorum :)). Özellikle beşinci albümdeki parçaların çoğu yakın zamanda demoları takip etmeye başlamış birine yabancı gelmeyecek.

Bi de bunun gibi iki derleme daha var. Her ne kadar dinlemememiş olsam da :) içeriğe bakarak özet geçeyim.

Sound of the Demoscene de içerik olarak Demovibes'a çok yakın, yine yeni nesil müzisyenlerin çalışmaları. Tek farkla, o da demo soundtracklerinden değil, partilerin müzik compolarındaki entrylerden oluşuyor.

Retrovibes ise Demovibes gibi soundtrack derlemesi, ama bu sefer daha gerilerden. ıçindeki soundtrackler Desert Dream, SOTA, Second Reality, Crystal Dream 2 gibi demoların modları.

ıkisine de aynı linkte ana sayfadan ulaşabilirsiniz. Siz kurcalarken ben de Retrovibes'ı indiriyim :).

19
resident / Resident Megademo
« : 05.05.2006 01:05:53 »
yok lan ne megademosu :) lame'den sonra yaptığımız ama release edilmemiş bir intro var burda. 7d5 64k için yapmıştık ama gerek kalmadı neyse ki :)

kod:anesthetic
plazma yazmayı yeni öğrenmiştim plazmalı bi intro yapmak istedim. küp için de hızlı bir poligon filler yapamadım ve precalc işine girdim (celeron 266'da yazıyordum). Tüm küpler tek bir animasyonun farklı filtrelerle çizilmiş hali. çizmek için tinyptc kullandım.

gfx:anesthetic
bu konu hakkında daha fazla konuşmak istemiyorum :)

msx:flexi
ben flexi'nin evindeyken trackerla bi şeyler deniyodu. bunu yaptıktan sonra "eeh bok gibi oldu" diyerek silmeye yeltendi. ben son anda alıp introya ekledim :)

buyrun, bu da sadece tr-demoscene takipçilerine özel bir intromuz olsun  :D

20
yabancı partiler / Live from Breakpoint 2006
« : 16.04.2006 02:18:56 »
http://www.demoscene.tv/

Biraz geç fark ettiğime yanıyorum ama meraklısı varsa burada parti canlı yayında.

21
nightshift / Basında Nightshift
« : 22.03.2006 23:23:08 »
after party sitesindekiler bir yana bu habere feci koptum:
http://haber.mynet.com/detail_news/?type=A...date=05Mart2006

flash, piksel, demo, compo dedikçe biz, adamlar ilginç çeviriler yapmak zorunda kalmış. "demo oyunlarıyla program yaptım". kim bilir aslı neydi cümlenin :)

22
pc / lcc-win32'de include problemi
« : 16.03.2006 00:08:14 »
şimdi ben projeyi hem vc++ hem de lcc-win32 ile derlemek istiyorum. Ama iki derleyicinin #include "dosya" tipinde directiveleri anlama yöntemleri farklı.

Örneğin şöyle bir dizin yapısı olsun.
source.c
defdef.h
defdefex.h

Source.c'den def.h'ı, def.h'tan da defex.h'ı include etmek istiyorum.

VC ile source.c içinde:
#include "defdef.h"
diyorum
def içinde de:
#include "defex.h"

diyorum ve sorunsuz çalışıyor.

lcc-win32 ile source.c içinden def.h'ı ekleme yöntemim aynı ama def.h içinde
#include "defdefex.h"
demeliyim, çünkü lcc pathleri o an okuduğu dosyaya göre değil de derlensin diye verdiğiniz dosyaya göre belirliyor (bu durumda source.c'ye göre)

Bu durumda iki seçeneğim var, ya tüm dosyaları aynı dizine koyacağım ya da #ifdef __LCC__ filan kullanarak iki farklı include tipi vereceğim. Ama hem düzinelerce dosya olduğu için hem de her seferinde iki farklı path belirtmek istemediğimden ikisi de cazip gelmiyor.

Aranızda böyle bir sorunla karşılaşıp lcc'ye durumu anlatabilmiş olan var mı? Derleyici seçeneklerinden baktım öyle bir şey göremedim. Google'da aradım bu problemden bahseden var mı diye yine bulamadım.

Bu yol imkansız ise VC'ye, pathleri lcc usülü anlaması için bir şey yapabilir miyim?

23
nightshift / Spread edilecek party reportlar
« : 07.03.2006 21:58:32 »
en az bir kişinin diğer topicte mesajlarımı görmediğinden emin olunca ayrı topicte belirteyim dedim. Party reportlarınızı ------------ gmail com a yollarsanız. parti ürünleri ile birlikte bir arayüzle birlikte release ederiz. arayüz tamamlandı. mümkünse ingilizce, değilse istediğiniz dilde yazabilirsiniz. hatta diğer topicteki reportlarınızı da bekliyorum. reportun formatı ansi olduğu sürece size kalmış.

24
pc / VC++ 8 ile Derlemede Sorun
« : 31.01.2006 22:41:51 »
VC++ 8 Express kurdum platform SDK'nın kütüphanelerini kullanıyorum saatler sonra şu programı derlemeyi başardım.

vctest.c
Kod: [Seç]
#include <windows.h>

int WINAPI WinMain
(
  HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  PSTR szcCmdLine,
  int iCmdShow
)
{
  MessageBox
  (
    NULL,
    TEXT(&quot;hede&quot;),
    TEXT(&quot;hodo&quot;),
    MB_ICONEXCLAMATION | MB_TASKMODAL
  );

  return 0;
}

Derleyen komut şu
cl vctest.c /nologo /link /DEFAULTLIB:USER32.LIB

sonuç
vctest.exe: crash.

Ama neden?

user32.lib'i gözüne sokmazsam MessageBox'a unresolved external symbol diyor ayrıca lcc'de buna gerek yoktu.

Hmm. User32'deki fonksiyonlar delleniyor User32.dll'nin bu işle bi alakası var sanırım.

25
tr scener discussion / Foruma ulaşmada sorun
« : 05.01.2006 00:42:05 »
chenmy'de site bi türlü açılmıyormuş bi kaç gündür. host sunucu bulunamadı diyormuş hep. statik ip imiş. sorun ne olabilir acaba, ne yapması gerekiyor?

26
demoscene / Scene.org 2005 Awards
« : 02.01.2006 22:53:25 »
Şubat sonuna kadar public's choice dalı için bir demoya oy verebiliyorsunuz. Her zamanki gibi PC'den bir çok dişli aday var, PC dışından tabi ki TBL'nin Breakpoint demosu (Ocean Machine) örnek verilebilir. Bu sene Loonies de çok iyi bir demo çıkardı. Bi de şu Pokemon Mini demosu var (Shizzle).

http://awards.scene.org/voting.php

27
geyik / pacman
« : 22.12.2005 15:00:16 »

28
geyik / Sır Kapısı
« : 18.10.2005 21:03:37 »
kamera kaydında bacakları gözükmeyen nightlord gerçeği işte burada!!


29
teori / Temel Geometri
« : 02.10.2005 02:41:22 »
3D ile uğraşmak isteyenler için başlangıç niteliğinde bir tutorial hazırlayayım istedim. Normalde bunu Antika için düşünüyordum ama burada da bulunsun hem Antika'nın ilk sayısı çıkana kadar anca bitmiş olur sanırım. Gerçi konu ile ilgili Sensei'nin, benim de zamanında işime yarayan "1D Uzay" yazısı var ama biraz daha geniş tutacağım hadiseyi.

Bu bi 3D grafik tutorialı olmayacak. Bu işin sadece uzay kısmını irdeleyeceğim. Dolayısıyla içerisinde kod örnekleri sunmama gerek yok. Zaten mesela matris çarpımını filan hangi dilde yazdığınız önemli olmayacak (teorik açıdan).

Daha önce bi software 3D kütüphanesi yazmıştım ama çok çok çok dandik fill algoritmam yüzünden sadece çizgi ve noktalarla uğraştım. Sonra OpenGL'e başlayınca fazla üzerine gitmedim. Ama OpenGL bile kullanıyor olsanız bir süre sonre glRotatef yahut glTranslatef'i filan geride bırakmak isteyeceksiniz. Tamam matris nedir bilmeden bi iki şey döndürebiliyoruz. Ama misal çeşitli kısımları çeşitli matris işlemlerine maruz kalmış büyük bir obje grubunu tek array'de nasıl tutacaksınız? Yani objenin bi kısmını OpenGL'e matrislerle çarptırıp ekrana bastınız mesela. Ama hangi uzay koordinatlarına yahut hangi piksele basıldığını bilmek istemez miydiniz? Bunları ezberden değil de anlayarak yapmak için olaylar nasıl gelişiyor bilmeniz lazım.

Şimdilik şu konuları ele alıcam. Daha ilerisine gitmek için biraz daha çalışmam lazım :)

- Geometri
- Vektör ve Uzay
- Kartezyen Sistem
- Üçüncü Boyut ve Devamı
- Neden Matrisler?
- Vektör Matrisleri
- Uzay Matrisleri
- Öteleme (Translation)
- Döndürme (Rotation)
- Boyutlandırma (Scaling)
- Daha Acayip Çevrimler
- Kartezyen Kamera (LookAt)

Kendinizi sıfır hissediyor yahut temelleri pekiştirmek istiyorsanız baştan dalın direk. Eğer geometri bilginiz fena değilse ama "Bu işleri matrislerle yapıyolar olm dedi geçen arkadaş, şaşırdım." diyorsanız. 'Neden Matrisler?'den başlayın. Yok eğer ben anladım bu matrisleri ama bi türlü kamera yazamadım diyorsanız da... Nerden başlayacağınızı biliyorsunuz.

Daha sonra ek olarak kısaca bazı matris işlemleri OpenGL'de nasıl yapılıyor ondan bahsederim. Ama o kısma kadar ne için kullandığınızı göz ardı edicem.

Son bir not da: Tutoriallar içinde italik yaptığım yazıları atlayabilirsiniz. Bunlar konunun yüzeyinden biraz uzaklaşan ve çok da gerekli olmayan bir takım açıklamalar olacaktır.

İlk yazı olarak 'Geometri'ye başlayabiliriz. Konuyu azıcık bilseniz bile bu yazı çok basit gelecektir. Ama tutarlılık açısından en temel kavramları vermem gerek diye düşünüyorum. Bi de çok matematik olmuş diyorsanız anlarım, tutorialın tamamı matematik olacak. Programlaması size kalmış.

Yazılar hakkında öneri, düzeltme, eleştiri ne varsa söylemekten çekinmeyin. Sonuçta ben de bu işin gurusu değilim. Daha bir çok şeyi idrak etme aşamasındayım. Tutorialı yazmamın bi sebebi de bu aşamayı hızlandırmak zaten.

30
pc / BMP Loader
« : 29.08.2005 20:26:11 »
bmp dosyalarının içeriğini kolayca almayı anlatalım bakalım biz de, ufak da olsa bi katkımız olsun.

.bmp dosyaları iki struct (file header, bitmap header) ve iki arrayden oluşuyor (color index, color data). Çeşit çeşit bitmap dosyası olduğundan, bu verileri okuyup renkleri alan bi programın bol bol koda sahip olması gerekli. Ama bunlar winapi altında var zaten. İşte burda bu yükü winapi'ye yükleyip nasıl bitmapi okuturuz onu anlatacağım. (gdi plus'ta aynı işi yapan tek bi fonksiyon var sanırım. Belki normal gdi'da bile vardır ama bulamadım.)

Programımız dosya ismini alacak ve renkleri 24bit yerleştirdiği belleğin adresini dönecek. Aynı zamanda verilen integer adreslerine genişlik ve yüksekliği yazacak. Bitmap için handle, bitmap bilgisi için BITMAP structeı, bitmapi okumamıza yardım edecek device context için handle, bir kaç geçici integer ve belleği dolduracağımız yer için bir pointer gerekli.
Kod: [Seç]
unsigned char* LoadBitmapFromFile (TCHAR* szFileName, int *piWidth, int *piHeight)
{
     HBITMAP hBitmap;
     BITMAP  Bitmap ;
     HDC     hDC    ;

     unsigned int  iColor, x, y, iPos = 0;
     unsigned char *pcRGBArray           ;
İlk önce verilen dosya ismini kullanarak dosyamızı bitmap olarak alalım. Bunun için LoadImage fonksiyonunu kullanıyoruz, processlerden değil de dosyadan aldığımız bir çok parametre 0. Önemli olan dosya ismi ve bitmap olduğu. (LoadBitmap fonksiyonu resourcedan almak için kullanılıyor.)
Kod: [Seç]
hBitmap = LoadImage (NULL, szFileName, IMAGE_BITMAP, 0, 0,
                      LR_LOADFROMFILE | LR_CREATEDIBSECTION);
if(hBitmap == NULL)
{
     MessageBox (NULL, TEXT("Dosya yüklenemedi."),
                 szFileName, MB_ICONERROR);
     return NULL;
}
Şimdi bitmapimizin genişlik ve yüksekliğini almak için GetObject fonksiyonunu kullanacağız. Bu fonksiyon bitmap handleı için BITMAP structeı dolduracak. Bitmap adlı structeımızın boyunu ve adresini yolladık mı o bize gerisini yapacak.
Kod: [Seç]
GetObject (hBitmap, sizeof (Bitmap), &Bitmap);
Yeni doldurulmuş structımızı okuyalım ve genişik, yükseklik bilgilerimizi yazalım:
Kod: [Seç]
*piWidth  = Bitmap.bmWidth;
*piHeight = Bitmap.bmHeight;
Sıradaki işimiz bitmapimizi analiz edip ekran moduna uygun hale getirmek. İlk önce mönitör ile uyumlu bir device context hazırlıyoruz. (CreateCompatibleDC başaramazsa NULL dönecektir isterseniz kontrol edebilirsiniz.) Daha sonra bu device contexti bitmap üzerinde kullanıyoruz.
Kod: [Seç]
hDC = CreateCompatibleDC (NULL);
SelectObject (hDC, hBitmap);
Artık bitmapimiz gdi fonksiyonları ile çizime hazır ama amacımız bu değil. Artık bitmapimize ait bir device contextimiz olduğuna göre istediğimiz pikseli GetPixel fonksiyonu ile görebiliriz. (SetPixel'le de yazabiliriz.) Şimdi renk bilgileri için yer alıp orayı dolduralım (GDI'ın renkleri 0xBBGGRR formatında tuttuğunu unutmadan). Her pikselde rengi integer olarak alıyoruz. 24bit renk arrayimiz için piksel adresinde R, G, B sırasıyla 3 byteı dolduruyoruz.
Kod: [Seç]
pcRGBArray = (unsigned char*)malloc ((*piWidth) * (*piHeight) * 3);
for (y = 0; y < (*piHeight); y++) for (x = 0; x < (*piWidth); x++)
{
     iColor = GetPixel (hDC, x, y);

     pcRGBArray[iPos++] =  iColor        & 0xFF;
     pcRGBArray[iPos++] = (iColor >>  8) & 0xFF;
     pcRGBArray[iPos++] = (iColor >> 16) & 0xFF;
}
Son olarak ortalığı toparlıyoruz:
Kod: [Seç]
DeleteObject (hDC)    ;
DeleteObject (hBitmap);
ve fonksiyondan çıkabiliriz:
Kod: [Seç]
    return pcRGBArray;
}

Kodun tamamı şöyle olacak:
Kod: [Seç]
unsigned char* LoadBitmapFromFile (TCHAR* szFileName, int *piWidth, int *piHeight)
{
     HBITMAP hBitmap;
     BITMAP  Bitmap ;
     HDC     hDC    ;

     unsigned int  iColor, x, y, iPos = 0;
     unsigned char *pcRGBArray          ;

     hBitmap = LoadImage (NULL, szFileName, IMAGE_BITMAP, 0, 0,
                           LR_LOADFROMFILE | LR_CREATEDIBSECTION);
     if(hBitmap == NULL)
     {
          MessageBox (NULL, TEXT("Dosya yüklenemedi."),
                      szFileName, MB_ICONERROR);
          return NULL;
     }

     GetObject (hBitmap, sizeof (Bitmap), &Bitmap);
     *piWidth  = Bitmap.bmWidth;
     *piHeight = Bitmap.bmHeight;

     hDC = CreateCompatibleDC (NULL);
     SelectObject (hDC, hBitmap);

     pcRGBArray = (unsigned char*)malloc ((*piWidth) * (*piHeight) * 3);

     for (y = 0; y < (*piHeight); y++) for (x = 0; x < (*piWidth); x++)
     {
          iColor = GetPixel (hDC, x, y);

          pcRGBArray[iPos++] =  iColor        & 0xFF;
          pcRGBArray[iPos++] = (iColor >>  8) & 0xFF;
          pcRGBArray[iPos++] = (iColor >> 16) & 0xFF;
     }

     DeleteObject (hDC)    ;
     DeleteObject (hBitmap);

     return pcRGBArray;
}
Son olarak bir noktaya da değinelim. LoadImage fonksiyonunun aldığı dosya isminde bi iki kriter gerekli (çoğu winapi fonksiyonunda olanlardan):
-Dosya sonu ve başında tırnak olmayacak
-Dizinleri ayırmak için / ya da \ (iki tane) kullanılacak.

Bi de monokrom ya da index color modda device context doğru hazırlanıyor mu deneyemedim ama 16bit renkte sorun yok gibi.

Sayfa: 1 [2] 3