Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - Glblendfunc
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

Glblendfunc

 
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> OpenGL, DirectX
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
umtk



Kayıt: Jun 07, 2003
Mesajlar: 17
Nereden: mersin

MesajTarih: Wed Oct 26, 2005 12:53 pm    Mesaj konusu: Glblendfunc Alıntıyla Cevap Ver

deneme amaçlı bazı kareler yaptım ve glblend uyguladım
sorunum şu kareleri sağ-sol tuşlarıyla rotate edince belli bir yönde şeffaflık kalkıyor
"glEnable(GL_DEPTH_TEST);" ' i kaldırdığımda bu sorun ortadan kalkıyor
glEnable(GL_DEPTH_TEST)'İ KULLANARAKTA bu şekilleri şeffaf gösteremezmiyiz.





Kod:

#include <windows.h>
#include <math.h>
#include <stdio.h>
#include <gl/gl.h>
#include <gl/glu.h>

#define key(a) GetAsyncKeyState(a)
#define KARESAYISI_X 6
#define KARESAYISI_Z 6

void giris();
void yenile();
LRESULT CALLBACK WndProc (HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC);
void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC);
int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine,
                    int iCmdShow)
{
    WNDCLASS wc;
    HWND hWnd;
    HDC hDC;
    HGLRC hRC;       
    MSG msg;
    BOOL bQuit = FALSE;
    wc.style = CS_OWNDC;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor (NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = "GLSample";
    RegisterClass (&wc);
    hWnd = CreateWindow (
      "GLSample", "OpenGL Sample",
      WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
      0, 0, 640, 480,
      NULL, NULL, hInstance, NULL);
    EnableOpenGL (hWnd, &hDC, &hRC);
    giris();
    while (!bQuit)
    {
        if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
        {   if (msg.message == WM_QUIT)
            {bQuit = TRUE;}
            else
            {TranslateMessage (&msg);
             DispatchMessage (&msg);
            }
        }
        else
        {
         yenile();
         SwapBuffers (hDC);
        }
    }
    DisableOpenGL (hWnd, hDC, hRC);
    DestroyWindow (hWnd);
    return msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hWnd, UINT message,
                          WPARAM wParam, LPARAM lParam)
{

    switch (message)
    {
    case WM_CLOSE:
        PostQuitMessage (0);
        return 0;
    case WM_KEYDOWN:
        switch (wParam)
        {
        case VK_ESCAPE:PostQuitMessage(0);return 0;
        }
        return 0;
    default:
        return DefWindowProc (hWnd, message, wParam, lParam);
    }
}
void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC)
{
    PIXELFORMATDESCRIPTOR pfd;
    int iFormat;
    *hDC = GetDC (hWnd);
    ZeroMemory (&pfd, sizeof (pfd));
    pfd.nSize = sizeof (pfd);
    pfd.nVersion = 1;
    pfd.dwFlags = PFD_DRAW_TO_WINDOW |   PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
    pfd.iPixelType = PFD_TYPE_RGBA;
    pfd.cColorBits = 24;
    pfd.cDepthBits = 16;
    pfd.iLayerType = PFD_MAIN_PLANE;
    iFormat = ChoosePixelFormat (*hDC, &pfd);
    SetPixelFormat (*hDC, iFormat, &pfd);
    *hRC = wglCreateContext( *hDC );
    wglMakeCurrent( *hDC, *hRC );
}
void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC)
{
    wglMakeCurrent (NULL, NULL);
    wglDeleteContext (hRC);
    ReleaseDC (hWnd, hDC);
}
double hx=0,hy=0,hz=2;
void giris()
{
                        glEnable(GL_DEPTH_TEST);
                        glEnable(GL_BLEND);
                         glBlendFunc(GL_SRC_ALPHA,GL_ONE);
                        glMatrixMode(GL_PROJECTION);
                        glLoadIdentity();
                        gluPerspective(60.0, 1.0 , 0.1, 200.0);
                        glMatrixMode(GL_MODELVIEW);
                        glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
                        glLoadIdentity ();
                        glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}
void yenile()
{
            static float theta=0;
            static float alf=0;

            glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
            glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

            glPushMatrix ();
            glTranslatef(0,0,-8);

            glRotatef (alf, 0.0f, 1.0f, 0.0f);
            glTranslatef(-hx,-hy,-hz);

            int x,z;
            for (x=-(KARESAYISI_X>>1);x<(KARESAYISI_X>>1);x++)
{
            for (z=-(KARESAYISI_Z>>1);z<(KARESAYISI_Z>>1);z++)
            {
            glPushMatrix ();
            glTranslatef(-x,0,-z);
            glRotatef (((x*x+z*z))/6.0f+theta, 1.0, 1.0f, 1.0f);
            glBegin (GL_QUADS);
            float ff=((int(theta)%360)*x*z)/300.0f;
            glColor4f (ff, 1.0, 1.0f,.5);        glVertex3f (-0.5f, 0.5f,0);
            glColor4f (ff, 0.0f, 1.0f,.5);  glVertex3f ( 0.5f, 0.5f,0);
            glColor4f (1.0f, 0.0f, 0.0f,0);      glVertex3f ( 0.5f,-0.5f,0);
            glColor4f (0.0f, 1.0f, 0.0f,0);      glVertex3f (-0.5f,-0.5f,0);
            glEnd ();
            glPopMatrix ();
            }
}
            glPopMatrix ();

            if(key(VK_HOME)) hy+=1;//yukarı
            if(key(VK_END )) hy-=1;//aşağı
            if(key(VK_LEFT)) alf-=1;//döndür sola
            if(key(VK_RIGHT))alf+=1;//döndür sağa
            if(key(VK_UP))  {hz-=.3*cos(alf/180.0*3.1415);hx+=.3*sin(alf/180.0*3.1415);}//ileri
            if(key(VK_DOWN)){hz+=.3*cos(alf/180.0*3.1415);hx-=.3*sin(alf/180.0*3.1415);}//geri
            if(key(220))    {hz-=.3*cos((90+alf)/180.0*3.1415);hx+=.3*sin((90+alf)/180.0*3.1415);}//ç sol yan
            if(key(191))    {hz+=.3*cos((90+alf)/180.0*3.1415);hx-=.3*sin((90+alf)/180.0*3.1415);}//ö sağ yan
            theta += 2.0f;
            Sleep (14);
}



Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et MSN Messenger
Ziyaretci



Kayıt: Apr 24, 2003
Mesajlar: 287
Nereden: İstanbul

MesajTarih: Wed Oct 26, 2005 1:15 pm    Mesaj konusu: Alıntıyla Cevap Ver

saydam cisimleri çizdirirken sıralama önemlidir.
önce saydam olmayanları çizdirmen gerekir. Ondan sonra uzaktan yakına doğru saydamları çizdirmen lazım.
Neden depth test çalışmıyor sorusunun cevabı şu: yakındaki kareyi çizince, depth testten dolayı uzaktaki çizilmiyor. bu durumda da arkasını görememiş oluyorsun ve saydam olmuyor.

neyse. öyle bişeyler işte.. kolay gelsin..

iyi oyunlar..
Başa dön
Kullanıcı profilini gör
stroma



Kayıt: Mar 31, 2003
Mesajlar: 169

MesajTarih: Wed Oct 26, 2005 5:53 pm    Mesaj konusu: Re: Glblendfunc Alıntıyla Cevap Ver

umtk demiş ki:

glEnable(GL_DEPTH_TEST)'İ KULLANARAKTA bu şekilleri şeffaf gösteremezmiyiz.

illa depth test kullanacaksan, glDepthFunc(GL_ALWAYS) yazarsan bir nevi kullanarak kullanmamış olursun..
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder MSN Messenger
umtk



Kayıt: Jun 07, 2003
Mesajlar: 17
Nereden: mersin

MesajTarih: Thu Oct 27, 2005 12:15 pm    Mesaj konusu: Alıntıyla Cevap Ver

dediğini yaptım glDepthFunc(GL_ALWAYS) kullandım ama
ama buseferde saydam olmayan bir çizim olunca oda saydamlaşıyor
heralde Ziyaretci 'nin dediği gibi yapacaz
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et MSN Messenger
stroma



Kayıt: Mar 31, 2003
Mesajlar: 169

MesajTarih: Thu Oct 27, 2005 2:43 pm    Mesaj konusu: Alıntıyla Cevap Ver

umtk demiş ki:
dediğini yaptım glDepthFunc(GL_ALWAYS) kullandım ama
ama buseferde saydam olmayan bir çizim olunca oda saydamlaşıyor
heralde Ziyaretci 'nin dediği gibi yapacaz
e bi sefer ayar yapayım sonra hep istediğimi çizsin diye birşey olamaz ki zaten? ziyaretçinin dediği gibi nesneleri düzenleyeceğine materyal özelliklerini düzenle, grupla. her nesne grubunu uygun materyal-renderstate değişimleri ile çiz. (bunu zaten her durumda yapman gerekiyor)
sıralamayı ekran kartı üzerinden yapmayacaksan hiç yapma, boş yere performans kaybından başka bişey olmaz. (vs4.0 ile havada vertex oluşturma gelecek o zaman bu işlemler için hızlı yapılabilir olacak diyorlar..) neyse, özellikle parçacıklarda çıkan bu sorunu az poligon için kullanacaksan dizerek, veya sırayı önemsemeyen blend efektleri kullanarak. veya.. alternatifler var.. ama tavsiye poly-sort yapan bir sistemi hiç bir zaman kullanmaman. hele ki işlemci üzerinden..
kolay gelsin.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder MSN Messenger
Mesajları göster:   
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> OpenGL, DirectX Tüm saatler GMT +2 Saat
1. sayfa (Toplam 1 sayfa)

 
Forum Seçin:  
Bu forumda yeni konular açamazsınız
Bu forumdaki mesajlara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.520 Saniye