SHAREPOINT CORRELATION ID HATASI COZUMU

Etiketler

, , , , , , ,


Evet Sharepoint te eger yukarida ki gibi bir hata ile karsilasirsaniz bunun sebebi %90 local sistemde calisiyor olmanizdir. Yani url adresiniz “localhost/sites/default” vs gibi birseydir. Normal olarak alternate access mapping ayarlarini yaparak bunu duzenleyebiliriz fakat ben bu kadar ugrastirmicam sizi. Bunu duzeltmek gercekten cok basit. Ama oncelikle bilgisayarinizin tam adini ogrenmeniz gerekiyor. Nasil mi start menusunden ‘computer’ veya ‘bilgisayarim’ secenegine sag tiklayin ve ozellikler ya da ingilizce olanlar icin properties secenegini secin. Daha sonra acilan pencerede hemen biraz asagida ‘Bilgisayar Adi’ veya ‘Computer Name’ seceneginin karsisindaki isim aynen sizin bilgisayarinizin ismi. Burayi aynen kopyalayin ve sharepoint te calistiginiz browser da ki ‘localhost/sites/default’ gibi olan yeri su sekilde degistirin ‘bilgisayarinizinadi/sites/default’ yani sadece localhost ifadesini siliyor ve bilgisayarimizin tam adini buraya kopyaliyoruz ve islem tamam ayni sayfa tekrar karsiniza gelicek fakat bu sefer yaptigniz islerde hata almiyacaksiniz.

Reklamlar

SHAREPOİNT NEDİR?

Etiketler

, ,

Sharepoint i bir cumle ile aciklayamam ama sunu soyleyebilirim ki sharepoint asla tamamen ogrenilmez. Cunku sharepoint cok buyuk bir platformdur. Siz sadece sharepoint te kendinizin isine yariyan yerleri ogrenir ve kullanirsiniz. Soyle dusunun, siz hic bir zaman microsoft office urunlerini tamamen ogrenmezsiniz. Sadece isinize yarayan programlari ogrenirsiniz word , exel , powerpoint vs.

Usttede belirttigim gibi Sharepoint bir program degildir, platformdur.

Sharepoint 6 bilesenden olusur. Nedir bunlar:

  1. Sites                                              
  2. Communities
  3. Content
  4. Search
  5. Insights
  6. Composites

Bunlari tek tek aciklamak gerekirse:

Sites : Sharepoint siteler yapar. Evet bu cok genel ve basit oldu fakat gercekten boyle. Kendiniz icin bir site istersiniz hemen yapar. Isiniz icin bir site istersiniz ‘boom’ hemen hazir ve bunu yaparken hic bir programlama dili bilmenize gerek yoktur.

Communities : Sharepoint ayni anda baska insanlarla calismanizi saglar. Bir dosya uzerinde calisabilir, dosyayi duzenleyip ustunde tartisabilirsiniz.

Content : Sharepoint size dosyalarinizi kendi localinizde degil sharepoint server uzerinde saklamanizi saglar. Boylece dosyalar bilgisayarinizda bosa yer kaplamaz. Isterseniz kisisel resimlerinizi bile sharepoint uzerinde saklayabilirsiniz.

Search : Sharepoint size cok buyuk bir arama ozelligi sunar. Sharepoint uzerinden insanlari yada dosyalari arayabilirsiniz ve bunu yaparken de sharepoint in guvenlik sahasi icinde olacaksiniz cunku sharepoint istenilmeyen bilgilere erisimi kesinlikle saglamaz.

Insights : Sharepoint sizin butun bilgilerinizi toparlayarak anlamli hale getirir. Yani ayri ayri yaptiginiz hersey aslinda sharepoint te birbirleriyle iliskilendirilir.

Composites : Sharepoint te bir cok isi hic bir kod yazmadan gerceklestirebilirsiniz. Ornegin Sharepoint te workflow lar yapabilirsiniz ve bunun icin hic bir seye ihtiyaciniz yok. Siz sadece belirtirsiniz Sharepoint sizin icin herseyi halleder.

Yani Sharepoint bir server uzerinde, birlikte calismayi saglayan, kod bilgisine ihtiyac duymadan bir cok islemin yapilabildigi genis bir platformdur.

SHAREPOINT SERVER 2010 KURULUM – (RESIMLI ANLATIM)

Etiketler

, , , , , , , , , , , , , , , , ,

Bir setup dosyasini bilgisayara kurmak ne kadar zor olabilir ki? Sen ki o kadar oyun yukleyip cracklemisken. Bir sharepointi mi yukleye miyeceksin?

Evet arkadaslar sharepoint 2010 server i windows 7-64 bit bilgisayarima yuklemeye baslarken dusundugum seyler bunlardi. Aslinda bu yaziyi yazacagim aklima bile gelmezdi. Ama yuklemek icin neredeyse 1 gun ugrasinca ve neredeyse hic bir Turkce kaynak bulamadigim icin sizlere resimli bir sekilde sharepoint server i bilgisayariniza yuklemeyi anlatacagim.

Ilk olarak sunu soylemeliyim ki 4 tane programa ihtiyacimiz olacak bunlari sirasi ile asagidan indirebilirsiniz

Microsoft Visual Studio

Sql Server

Internet Information Services

Sharepoint Server

Amacimiz sharepoint server i yuklemek oldugu icin microsoft visual ve sql server in kurulumunu size birakiyorum. Yalniz unutmayin her seyi yukarida ki siraya gore yukleyeceksiniz ilk once visual sonra sql sonra iis (internet information service) en son ise sharepoint.

Evet ilk olarak yapmamiz gereken iis6 yi bilgisayarimiza yuklemek.

Evet iis6 nin exe dosyasini calistirdiginizda yukarida ki ekran gelicek her zaman yaptigimiz gibi next diyerek asagidaki ekrana kadar gelelim.

Evet ustteki pencereye geldigimizde company kismi bos olacak. Bu kisma my yazalim ve baska degisiklik yapmadan ilerleyip kurulumumuzu tamamlayalim.

Bilgisayarimiza iis6 yi kurduktan sonra artik alttaki islemleri yapmaya gecebiliriz. 

1-) Denetim masasina girelim (Turkce olanlar icin Baslat ve sagda denetim masasi, Ingilizce olanlar icin start ve control panel)

2-)

Ustteki resimde goruldugu gibi Programs sekmesine tiklayalim (Turkce olanlar icin Programlar ve Ozellikleri)

3-)

Yukarida ki resimde kirmizi icine alinan ”Turn Windows Features on or off” sekmesine girleim. (Turkce kullananlar icin Windows ozelliklerini ac yada kapa)

4-) 

Yukarida ki resimde kirmizi icine alinan yerlerdeki kutucuklarin hepsini resimdeki gibi isaretli hale getiriyoruz ve ok a tiklayarak cikiyoruz. (Islem biraz uzun surebilir)

Evet iis6 ile isimizi bitirdikten sonra artik sharepoint server in kurulumuna gecebiliriz.

–Sharepoint Server 2010 kurulumu–

1-) Oncelikle bilgisayarima gelin ve c nin hemen icinde Sharepoint isimli bir klasor olusturun ve Indirdiginiz Sharepoint Server 2010 setup in icindeki butun dosyalari asagidaki resimdeki gibi dosyanin icine atin.

2-) Yukarida ki resim de de gorulen Files dosyasinin icine girin. Buradan en ustteki Setup dosyasina girin ve karsiniza config isimli bir dosya gelecek. Bu dosyaya sag tiklayin ve notepad ile acin daha sonra asagida ki kodu asagida ki resimde kirmizi ile gosterilmis sekilde kodunuza ekleyin ve file->save yaparak buradan cikin.

<Setting Id="AllowWindowsClientInstall" Value="True"/>

3-) 

Daha sonra c deki sharepoint dosyamiz icerisinde ki yukarida kirmizi ile gosterilmis olan setup dosyamizi buluyoruz ve ilk once mouse sag tik daha sonra ‘Run as Administrator’ turkceler icin(Yonetici olarak calistir) secenegini secip setup imizi calistiriyoruz.

4-) 

Daha sonra karsimiza yukarida ki gibi bir pencere gelicek buraya bir product key yazip onaylandiktan sonra Continue secenegine tiklatiyoruz ve ilerliyoruz. 

Bir sonraki pencerede Lisans kosullarini kabul ediyoruz  ve yeniden Continue secenegine tiklatiyoruz.

5-) 

Buradan Standalone secenegini seciyoruz ve Sharepoint Server 2010 umuzu yukluyoruz.

6-) Yukleme bittikten sonra karsimiza asagidaki gibi bir pencere gelecek buradaki kutucugu resimdeki gibi isaretli bir sekilde birakip close secenegini tiklatalim.

7-) Daha sonra karsimiza asagida ki resimdeki Configuration Wizard gelecek.

Burada ileri dedigimizde bize 2 tane uyari verecek bunlar Sharepoint server i server olmayan bir bilgisayara kurdugumuz hakkinda digeride internet information servicesin yukleme esnasinda kapatilacagi hakkinda ikisinide yes diyerek devam ediyoruz.

———–Uyari: Eger ikisinide yes dedikten sonra ” Failed to start the database service MSSQL$OfficeServers. Repair this product by selecting it from the Add/Remove Programs menu” boyle bir hata aliyorsaniz yapmaniz gerekenler sunlardir.

Start veya Baslata run yazin cikan ekrana regedit yazin ve enter layin. Karsimiza cikan ekrandan  “HKEY_LOCSL_MACHINE/Software/Microsoft/Shared Tools/Web Server Extensions/14.0/WSS/”  sekmesini bulun daha sonra Server Role isimli degiskeni sag tiklayip modify yada duzenle diyerek asagidaki resimdeki gibi SINGLESERVER dan APPLICATION a cevirin. 

8 – ) Eger bu hatayi almadiysak veya duzelttiysek yuklememize devam ediyoruz. Artik karsimiza asagidaki gibi bir ekran gelicek buradan 2. secenegi secerek devam ediyoruz ve yuklememizi bitiriyoruz.

Eger yukleme esnasinda herhangi bir sorunla karsilasirsaniz muhtemelen asagida verecegim link icinde sorunun cevabini bulacaksiniz ve sorunu giderdikten sonra yeniden Sharepoint Configuration Wizard i calistirirsaniz yuklemeyi tamamlamis olacaksiniz.

YUKLEME ESNASINDAKI SORUNLAR

directX Işıklandırma

Etiketler

, , , , , ,

     Oynadığımız oyunlarda ki ışıklandırmalar gerçek dünyadakilerden çok farklıdır. Gerçek dünyada ışık çok karmaşık bir yapıdadır. Işık direk olarak cisimlerin üstüne düşmez, ışık gelir havada ki birçok bileşen(toz vs.) ile etkileşime girer ve cisimlerin üstüne düşen ışık çok farklı şekillerde olabilir. Bu hesaplamaları bilgisayar oyunlara yapmaya kalksak sanırım Quantum bilgisayarlara ihtiyacımız olur.

     Oyunlar gerçek dünya’nın aynısı olmasada ona yakın olan ışıklandırma teknikleri kullanırlar.

—IŞIK ÇEŞİTLERİ—

     Gerçek dünyadakilere yakın 3 tip ışık çeşiti vardır. Bunlar ;

  1. Diffuse Lighting (Dağıtılmış ışık)
  2. Ambient Lighting (Ortam ışığı)
  3. Specular Lighting (Speküler ışık)

—Diffuse Lighting—

     Bu ışık türünde ışık doğrudan yüzeye çarpar. Örneğin elinize karanlık bir odada el feneri ile ışık tutarsanız elinizin aydınlanmış tarafı diffuse lighting olarak adlandırılır.

—Ambient Lighting—

     Elinize bir odada tek bir ışık kaynağından (el feneri vs.) ışık tuttuğunuzda daha karanlık olan (tamamen değil) taraftır.

—Specular Lighting—

     Speküler ışık genelde yansımayı ifade eder. Örneğin bir topun üzerine bir ışık kaynağı yansıtırsanız ışık topun bir kısmında çok yoğunlaşacak ve burada bir parlaklık oluşturacaktır. Buna Specular Lighting denir.

—IŞIK KAYNAĞI ÇEŞİTLERİ—

     Bu üç ışık tipini oluşturmak için çeşitli ışık kaynakları vardır. Bunlar ışıkları çıkarış rengine ve parlaklığına göre farklılık gösterir. Bu ışık kaynakları birlikte kullanılarak gerçekçi bir görüntü elde edilir.

  1. Ambient Lights (Ortam ışık kaynağı)
  2. Directional Lights (Doğrudan ışık kaynağı)
  3. Paint Lights (Boya ışık kaynağı)
  4. Spot Lights (Nokta ışık kaynağı)

—Ambient Lights—

     Beyaz ve gri renkten oluşur. Gri renk karanlık tarafı, beyaz renk ise ışığın vurduğu açık kısmı temsil eder.

—Directional Lights—

     Ambient Lights’ lara benzerler. Ambient Lights’ lar ile tek farkı adı üstünde olduğu gibi bu ışık kaynağı tek bir yerden doğrudan gelir. Bu ışıklandırma tekniği oyunlarda ki güneş ışığı için kullanılır.

—Paint Lights—

     Belli bir yörüngesi olmayan her tarafa ışığı eşit dağıtan kaynak tipleridir.

—Spot Lights—

     El feneri, araba farı vs. de kullanılır.

Kodumuz 

     Burada öncelikle söylemem gereken bir şey var. Bazı genel kodları “genel.h isimli bir header dosyasında topladım çünkü bunları ne yaparsak yapalım kullanıyoruz ve kodun bu tarafında değişiklik neredeyse olmuyor.

—“genel.h” dosyamın içi—

#include <Windows.h>
#include <d3d9.h>
#include <d3dx9.h>

#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"d3dx9.lib")

#define SCREEN_WIDTH 1152
#define SCREEN_HEIGHT 864
DWORD dx_style=WS_EX_TOPMOST|WS_VISIBLE|WS_POPUP;

LPDIRECT3D9 pD3D;
LPDIRECT3DDEVICE9 pDevice;
LPDIRECT3DVERTEXBUFFER9 pVertexBuffer;
LPDIRECT3DINDEXBUFFER9 pIndex;

bool dx_kur(HWND hWnd);
void dx_temizle();
void dx_serbestBirak();
void dx_vertexBufferKur();
void dx_isigiBaslat();

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,
 WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,
 HINSTANCE hPrevInstance,
 LPSTR lpCmdLine,
 int nCmdShow)
{
 HWND hWnd;
 WNDCLASSEX wndCEx;

 ZeroMemory(&wndCEx,sizeof(WNDCLASSEX));
 wndCEx.style=CS_HREDRAW|CS_VREDRAW;
 wndCEx.lpfnWndProc=WndProc;
 wndCEx.cbClsExtra=0;
 wndCEx.cbWndExtra=0;
 wndCEx.hInstance=hInstance;
 wndCEx.hIcon=LoadIcon(0,IDI_APPLICATION);
 wndCEx.hCursor=LoadCursor(0,IDC_ARROW);
 wndCEx.hbrBackground=(HBRUSH)COLOR_WINDOW;
 wndCEx.lpszClassName=L"Hulucplusplus";
 wndCEx.cbSize=sizeof(WNDCLASSEX);

 RegisterClassEx(&wndCEx);

 hWnd=CreateWindowEx(NULL,L"Hulucplusplus",
 L"directX",dx_style,0,0,
 SCREEN_WIDTH,SCREEN_HEIGHT,
 NULL,NULL,hInstance,NULL);

 ShowWindow(hWnd,nCmdShow);

 MSG message;

 dx_kur(hWnd);

 while(TRUE)
 {
 if(PeekMessage(&message,NULL,NULL,NULL,PM_REMOVE))
 {
 if(message.message==WM_QUIT)
 break;

 TranslateMessage(&message);
 DispatchMessage(&message);
 }
 dx_temizle();
 }

 dx_serbestBirak();

 return (int)message.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,
 UINT message,WPARAM wParam,LPARAM lParam)
{
 switch(message)
 {
 case WM_DESTROY:
 {
 PostQuitMessage(0);
 return 0;
 }

 case WM_KEYDOWN:
 {
 switch(wParam)
 {
 case VK_ESCAPE:
 {
 PostQuitMessage(0);
 return 0;
 }
 }
 }
 }

 return DefWindowProc(hWnd,message,wParam,lParam);
}

void dx_serbestBirak()
{
 if(pD3D!=NULL)
 pD3D->Release();

 if(pDevice!=NULL)
 pDevice->Release();

 if(pVertexBuffer!=NULL)
 pVertexBuffer->Release();

 if(pIndex!=NULL)
 pIndex->Release();
}

---Kodumuzun Tamamı---

#include "genel.h"
DWORD fvf_style=D3DFVF_NORMAL|D3DFVF_XYZ;

struct CUSTOMVERTEX
{
 FLOAT x,y,z;
 D3DVECTOR NORMAL;
};

bool dx_kur(HWND hWnd)
{
 pD3D=Direct3DCreate9(D3D_SDK_VERSION);

 D3DPRESENT_PARAMETERS present;

 ZeroMemory(&present,sizeof(D3DPRESENT_PARAMETERS));
 present.SwapEffect=D3DSWAPEFFECT_DISCARD;
 present.hDeviceWindow=hWnd;
 present.Windowed=FALSE;
 present.BackBufferCount=1;
 present.BackBufferFormat=D3DFMT_X8R8G8B8;
 present.BackBufferHeight=SCREEN_HEIGHT;
 present.BackBufferWidth=SCREEN_WIDTH;
 present.AutoDepthStencilFormat=D3DFMT_D16;
 present.EnableAutoDepthStencil=TRUE;

 if(FAILED(pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL, hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&present,&pDevice)))
 return FALSE;

 dx_vertexBufferKur();
 dx_isigiBaslat();

 pDevice->SetRenderState(D3DRS_LIGHTING,TRUE);
 pDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
 pDevice->SetRenderState(D3DRS_ZENABLE,TRUE);
 pDevice->SetRenderState(D3DRS_AMBIENT,D3DCOLOR_XRGB(50,50,50));

 return TRUE;
}

void dx_temizle()
{
 pDevice->Clear(NULL,NULL,D3DCLEAR_TARGET,
 D3DCOLOR_XRGB(0,0,0),1.0f,0);
 pDevice->Clear(NULL,NULL,D3DCLEAR_ZBUFFER,
 D3DCOLOR_XRGB(0,0,0),1.0f,0);

 pDevice->BeginScene();
 pDevice->SetFVF(fvf_style);

 D3DXMATRIX mView;
 D3DXMatrixLookAtLH(&mView,
 &D3DXVECTOR3(0.0f,8.0f,25.0f),
 &D3DXVECTOR3(0.0f,0.0f,0.0f),
 &D3DXVECTOR3(0.0f,1.0f,0.0f));
 pDevice->SetTransform(D3DTS_VIEW,&mView);

 D3DXMATRIX mProjection;
 D3DXMatrixPerspectiveFovLH(&mProjection,
 D3DXToRadian(45),
 (FLOAT)SCREEN_WIDTH/SCREEN_HEIGHT,
 1.0f,100.0f);
 pDevice->SetTransform(D3DTS_PROJECTION,&mProjection);

 static float index=0.0f; index+=0.003f;

 D3DXMATRIX mRotateY;
 D3DXMatrixRotationY(&mRotateY,index);
 pDevice->SetTransform(D3DTS_WORLD,&mRotateY);

 pDevice->SetStreamSource(0,pVertexBuffer,0,
sizeof(CUSTOMVERTEX));
 pDevice->SetIndices(pIndex);

 pDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,
 0,10,0,6);

 pDevice->EndScene();

 pDevice->Present(NULL,NULL,NULL,NULL);
}

void dx_vertexBufferKur()
{

 CUSTOMVERTEX vertices[] =
 {
 { 3.0f, 0.0f, 0.0f, D3DCOLOR_XRGB(0, 255, 0), },
 { 0.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 255), },
 { 0.0f, 0.0f, 10.0f, D3DCOLOR_XRGB(255, 0, 0), },
 { -3.0f, 0.0f, 0.0f, D3DCOLOR_XRGB(0, 255, 255), },

 { 3.2f, -1.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 255), },
 { 3.2f, -1.0f, 11.0f, D3DCOLOR_XRGB(0, 255, 0), },
 { 2.0f, 1.0f, 2.0f, D3DCOLOR_XRGB(255, 0, 0), },

 { -3.2f, -1.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 255), },
 { -3.2f, -1.0f, 11.0f, D3DCOLOR_XRGB(0, 255, 0), },
 { -2.0f, 1.0f, 2.0f, D3DCOLOR_XRGB(255, 0, 0), },
 };

pDevice->CreateVertexBuffer(10*sizeof(CUSTOMVERTEX),
 0,fvf_style,D3DPOOL_MANAGED,&pVertexBuffer,NULL);

 VOID *pVoid;

 pVertexBuffer->Lock(0,0,(void**)&pVoid,0);

 memcpy(pVoid,vertices,sizeof(vertices));
 pVertexBuffer->Unlock();

 short indices[] =
 {
 0, 1, 2, 
 2, 1, 3,
 3, 1, 0,
 0, 2, 3,
 4, 5, 6, 
 7, 8, 9,
 };

 pDevice->CreateIndexBuffer(18*sizeof(short),
 0,D3DFMT_INDEX16,D3DPOOL_MANAGED,&pIndex,NULL);

 pIndex->Lock(0,0,(void**)&pVoid,0);

 memcpy(pVoid,indices,sizeof(indices));
 pIndex->Unlock();

}

void dx_isigiBaslat()
{
 D3DLIGHT9 light;
 D3DMATERIAL9 material;

 ZeroMemory(&light,sizeof(D3DLIGHT9));
 light.Type=D3DLIGHT_DIRECTIONAL;
 light.Diffuse=D3DXCOLOR(0.5f,0.5f,0.5f,1.0f);
 light.Direction=D3DXVECTOR3(-1.0f,-0.3f,-1.0f);

 pDevice->SetLight(0,&light);
 pDevice->LightEnable(0,TRUE);

 ZeroMemory(&material,sizeof(D3DMATERIAL9));
 material.Diffuse=D3DXCOLOR(1.0f,1.0f,1.0f,1.0f);
 material.Ambient=D3DXCOLOR(1.0f,1.0f,1.0f,1.0f);

 pDevice->SetMaterial(&material);
}

directX ile Donen Ucgen Yapimi

Etiketler

, , ,

 
#include <Windows.h>
#include <d3d9.h>
#include <d3dx9.h>

int screen_width=1152;
int screen_height =864;

DWORD dx_style=WS_EX_TOPMOST|WS_POPUP|WS_VISIBLE;
DWORD fvf_style= D3DFVF_XYZ|D3DFVF_DIFFUSE;

LPDIRECT3D9 pD3D;
LPDIRECT3DDEVICE9 pDevice;
LPDIRECT3DVERTEXBUFFER9 pVertexBuffer;
LPDIRECT3DINDEXBUFFER9 i_buffer;

int angle=0;

struct CUSTOMVERTEX
{
 FLOAT x,y,z;
 DWORD Color;
};

bool dx_kur(HWND hWnd);
void dx_temizle();
void dx_serbest_birak();
bool dx_VertexKur();

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,
 WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
 LPSTR lpCmdLine,int nCmdShow)
{
 HWND hWnd;
 WNDCLASSEX wndCEx;

 ZeroMemory(&wndCEx,sizeof(WNDCLASSEX));
 wndCEx.style=CS_HREDRAW|CS_VREDRAW;
 wndCEx.lpfnWndProc=WndProc;
 wndCEx.cbClsExtra=0;
 wndCEx.cbWndExtra=0;
 wndCEx.hInstance=hInstance;
 wndCEx.hIcon=LoadIcon(0,IDI_APPLICATION);
 wndCEx.hCursor=LoadCursor(0,IDC_ARROW);
 wndCEx.hbrBackground=(HBRUSH)COLOR_WINDOW;
 wndCEx.lpszClassName=L"UCBOYUT";
 wndCEx.cbSize=sizeof(WNDCLASSEX);

 RegisterClassEx(&wndCEx);

 hWnd=CreateWindowEx(NULL,L"UCBOYUT",L"HULUCPLUSPLUS",
 dx_style,0,0,screen_width,screen_height,
 NULL,NULL,hInstance,NULL);

 ShowWindow(hWnd,nCmdShow);

 MSG message;

 dx_kur(hWnd);
 dx_VertexKur();

 while(TRUE)
 {
 if(PeekMessage(&message,NULL,NULL,NULL,PM_REMOVE))
 {
 if(message.message==WM_QUIT)
 break;
 TranslateMessage(&message);
 DispatchMessage(&message);
 }
 dx_temizle();
 }

 dx_serbest_birak();

 return (int)message.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,
 WPARAM wParam,LPARAM lParam)
{
 switch(message)
 {
 case WM_DESTROY:
 {
 PostQuitMessage(0);
 return 0;
 }

 case WM_KEYDOWN:
 {
 switch(wParam)
 {
 case VK_ESCAPE:
 PostQuitMessage(0);
 return 0;
 }
 }
 }
 return DefWindowProc(hWnd,message,wParam,lParam);
}

bool dx_kur(HWND hWnd)
{
 pD3D=Direct3DCreate9(D3D_SDK_VERSION);
 D3DPRESENT_PARAMETERS present;

 ZeroMemory(&present,sizeof(D3DPRESENT_PARAMETERS));
 present.SwapEffect=D3DSWAPEFFECT_DISCARD;
 present.hDeviceWindow=hWnd;
 present.Windowed=FALSE;
 present.BackBufferFormat=D3DFMT_X8R8G8B8;
 present.BackBufferCount=1;
 present.BackBufferWidth=screen_width;
 present.BackBufferHeight=screen_height;
 present.EnableAutoDepthStencil=TRUE;
 present.AutoDepthStencilFormat=D3DFMT_D16;

 if(FAILED(pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,
 hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING,&present,&pDevice)))
 return FALSE;
 pDevice->SetRenderState(D3DRS_LIGHTING,FALSE);
 pDevice->SetRenderState(D3DRS_ZENABLE,TRUE);

 return TRUE;
}

void dx_temizle()
{
 pDevice->Clear(0, NULL, D3DCLEAR_TARGET, 
 D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
 pDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, 
 D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);

 pDevice->BeginScene();
 pDevice->SetFVF(fvf_style);

 D3DXMATRIX matView; 
 D3DXMatrixLookAtLH(&matView,
 &D3DXVECTOR3 (0.0f, 8.0f, 25.0f), 
 &D3DXVECTOR3 (0.0f, 0.0f, 0.0f), 
 &D3DXVECTOR3 (0.0f, 1.0f, 0.0f)); 
 pDevice->SetTransform(D3DTS_VIEW, &matView); 

 D3DXMATRIX matProjection; 
 D3DXMatrixPerspectiveFovLH(&matProjection,
 D3DXToRadian(45), 
 (FLOAT)screen_width / (FLOAT)screen_height, 
 1.0f, 100.0f);

 pDevice->SetTransform(D3DTS_PROJECTION, &matProjection); 

 static float index = 0.0f; index+=0.03f; 

 D3DXMATRIX matRotateY; 
 D3DXMatrixRotationY(&matRotateY, index); 
 pDevice->SetTransform(D3DTS_WORLD, &(matRotateY));
 pDevice->SetStreamSource(0, pVertexBuffer, 0, 
 sizeof(CUSTOMVERTEX));

 pDevice->SetIndices(i_buffer);

 pDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,8,0,12);

 pDevice->EndScene(); 

 pDevice->Present(NULL, NULL, NULL, NULL);
 }

void dx_serbest_birak()
{
 if(pDevice!= NULL)
 pDevice->Release();

 if(pD3D!=NULL)
 pD3D->Release();

 if(pVertexBuffer!=NULL)
 pVertexBuffer->Release();

 if(i_buffer!=NULL)
 i_buffer->Release();
}

bool dx_VertexKur()
{
 HRESULT hr;

 CUSTOMVERTEX pVertex[] ={
 { -3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 255), },
 { 3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 255, 0), },
 { -3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(255, 0, 0), },
 { 3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(0, 255, 255), },
 { -3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 255), },
 { 3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(255, 0, 0), },
 { -3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 255, 0), },
 { 3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 255, 255), },
 };

 hr=pDevice->CreateVertexBuffer(8*sizeof(CUSTOMVERTEX),0,
 fvf_style,D3DPOOL_MANAGED,&pVertexBuffer,NULL);

 if(FAILED(hr))
 return 0;

 VOID* pVertices;

 hr=pVertexBuffer->Lock(0,sizeof(pVertex),(void**)&pVertices,0);

 if(FAILED(hr))
 return 0;

 memcpy(pVertices,pVertex,sizeof(pVertex));

 pVertexBuffer->Unlock();

 short indices[]=
 {
 0,1,2,
 2,1,3,
 4,0,6,
 6,0,2,
 7,5,6,
 6,5,4,
 3,1,7,
 7,1,5,
 4,5,0,
 0,5,1,
 3,7,2,
 2,7,6,
 };

 pDevice->CreateIndexBuffer(36*sizeof(short),0,
 D3DFMT_INDEX16,D3DPOOL_MANAGED,&i_buffer,NULL);

 i_buffer->Lock(0,0,(void**)&pVertices,0);
 memcpy(pVertices,indices,sizeof(indices));
 i_buffer->Unlock();

 return 1;
}

directX kutuphanelerini eklemek

Etiketler

, , , , ,

Merhaba arkadaslar bu yazimda directX icin bir projenin nasil olusturuldugunu ve directX kutuphanelerinin nasil eklendigini anlatacagim. Oncelikle bilgisayarinda directX SDK’ nin bir surumu olmayanlara directX SDK’ yi indirmeleri icin link veriyorum.

—directX SDK indir—

Oncelikle Visual Studio’ muzu acalim buradan File->New Project’ i secelim.

Yukarida ki resimde goruldugu gibi Visual C++ ve buradan da Win32 Project’ i seciyoruz. Projemizin ismini de yazdiktan sonra OK diyoruz.

Buradan Windows Application ve Empty Project’ i sectikten sonra Finish diyoruz ve Projemizi olusturuyoruz.

Daha sonra Solution Explorerda ki projemizin ismine sag tikliyoruz buradan Add->New Item secenegini tikliyoruz.

Buradan C++ File(.cpp) ‘yi seciyoruz ve bir isim girdikten sonra Add diyerek ekliyoruz.

Daha sonra ustteki menulerden Project->Properties’ e giriyoruz.

Buradan C/C++ secenegine gelip sag menu en ustteki Additional Include Directories kismini aciyoruz. Buradan sari dosya isaretine tikliyarak indirdigimiz directX SDK’ nin icindeki Include klasorunu bulup aciyoruz ve Select Folder diyoruz.

Daha sonra Linker menusunu acip General kismina geliyoruz buradan da Additional Library Directories kismina yine directX SDK mizin icindeki Lib klasorunu ekliyoruz.

Son olarak yine Linker daki Input secenegine geliyoruz sag en ustteki Additional Dependencies kismini aciyoruz ve d3d9.lib ve altina d3dx9.lib yazarak OK ye basiyoruz.

Ve simdi kodlama zamani!

directX Hakkinda

Etiketler

, , , , , ,

Evet arkadaslar sitemde directX ile kodlar yayinladim fakat oncelikle directX’in iyice anlasilmasi gerektigini dusundum. Bunun icin bu yazimda enine boyuna directX ile ilgili bilgilerden bahsedecegim.

—directX nedir?—

Windows isletim sistemi ile calisan bilgisayarlarin donanimina dusuk seviyede arayuz ile ulasmamizi saglayan Microsoft’un API koleksiyounudur.

directX 9.0 versiyonundan itibaren API coklu bolumlere ayrilmistir.

Bunlar :

–> directXGraphics : Grafik ile ilgilenen kisimdir.

–> directInput : Klavye, mouse, joystick vs. gibi girisleri kapsar.

–> directPlay : Network uzerinden oynanan oyunlar icin.

–> directSound : Arka fon muzikleri vs. koymamizi saglar.

–> directMusic : Kendi yarattiginiz dinamik muzikler icin.

–> directShow : Oyun icine koydugunuz videolar’i eklemek icin.

–> directSetup : Kodladiginiz oyunun her bilgisayarda calisabilmesi icin setup.

**Yukarida ki birimlerin hepsi birbirinden bagimsiz olarak calisabilir.

—directX’ten once?—

directX’ten once oyun programcilari oyunlari DOS’ta yaziyorlardi. Bunun hem iyi hem de kotu yonleri vardi. Iyi yonleri programci dogrudan bilgisayarin donanimi ile islem yaptigi icin butun kontrol programcidaydi ayrica hiz olarakta oldukca iyiydi. Fakat programcilar kodlari tek tek makine diline cevirmek zorundaydi ayrica bilgisayarlarin ozellikleri farklilik gosterince oyunlar calismamaktaydi. Ornegin programci oyunu 640*480 ekran cozunurlugune gore yapiyordu eger bilgisayariniz 320*240 ekran cozunurlugundeyse bu oyunu oynama sansiniz yoktu.

Windows 3.1 yayinlandiginda DOS ile benzer ozellikler gosterdi ve oyunlarin genel olarak butun bilgisayarlarda oynanabilmesine olanak verdi bunun icin oyun sektorunde gunumuze kadar uzanan Windows egemenligi baslamis oldu.

Windows kendini gelistirmekte kararliydi bunun icin programcilara WinG adini verdigi bir kutuphane sundu fakat bu kutuphane cok az fonksiyon iceriyordu. Bunun icin kullanicilar alistiklari eski sistemden yani DOS’tan vazgecmediler.

Microsoft bir adim daha atarak directX 1’i yayinladi ve buna SDK (Softare Development Kit) adini verdi. directX oyunlar ile donanim arasina bir katman koyarak grafikleri ekrana cizdirmeyi cok kolay bir hale getirdi ve uzun zamanlar harcatan makine koduna cevirme isini tamamen rafa kaldirdi. Boylece gunumuze kadar uzanan directX cilginligi baslamis oldu.

directX COM (Component Object Model) ile calisir. COM’lar normal olarak DLL halindedir. DLL’ler normalde Windows ile bilgisayariniza yuklenir fakat directX COM’lari extra olarak setup esnasinda bilgisayariniza aktarir boylece directX 5 ile yazilmis bir oyunu directX 11 ile oynayabilirsiniz.

—directX yapisi?—

Burada ki en onemli yapi HAL (HARDWARE ABSTRACTION LAYER) dir. HAL ekran karti ile direk iletisim kurabilmekte bu da onu oldukca hizli yapmaktadir. HAL’in asil gorevi directX’ten gelen komutlari ekran kartinin anlayacagi dile cevirmektir.

HEL ise HAL’in ceviremedigi komutlarda devreye girer ve bu komutlari islemciye yaptirir. Cok yavas olsada hata vermeyi engeller yinede yavas oldugu icin artik kullanilmamaktadir.

directX’in yapisi kisaca boyle artik umarim ney’i ne icin yazdiginizi daha iyi anlarsiniz…

DirectX Pencere arkasina resim koymak

Etiketler

, , ,

Merhaba arkadaslar bu yazimda directX ile olusturulan bir 
pencerenin arkasina istedigimiz bir resmi koymanin kodlarini 
paylasacagim. Oncelikle begendiginiz bir resmi olusturdugunuz
projenin icine atmaniz ve kodun icindeki :
bkgrd = getSurfaceFromBitmap("./god.jpg"); 
kisminda ki "god.jpg" yere kendi resminizin ismini yazmaniz
gerekiyor.
 
#include <windows.h>
#include <d3d9.h>
#include <d3dx9tex.h>
#include <string>

HINSTANCE hInst;
HWND wndHandle;

bool initWindow(HINSTANCE hInstance);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

// DirectX functions and global variables
HRESULT lastResult;
LPDIRECT3D9 pD3D;
LPDIRECT3DDEVICE9 pd3dDevice;
IDirect3DSurface9* bkgrd;

bool initDirect3D(HWND hwnd);
IDirect3DSurface9* getSurfaceFromBitmap(std::string filename);
void Render(void);

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow)
{
 if (!initWindow(hInstance))
 return false;

 if (!initDirect3D(wndHandle))
 return false;

 bkgrd = getSurfaceFromBitmap("./god.jpg");
 if (bkgrd == NULL)
 {
 MessageBox(NULL, "Dosya yok", 
 "Hata", MB_OK);
 return 0;
 }

 // Main message loop:
 // Enter the message loop
 MSG msg; 
 ZeroMemory( &msg, sizeof(msg) );
 while( msg.message!=WM_QUIT )
 {
 if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
 {
 TranslateMessage( &msg );
 DispatchMessage( &msg );
 }
 else
 {
 // call our render function
 Render();
 }
 }

 if( pd3dDevice != NULL) 
 {
 pd3dDevice->Release();
 pd3dDevice = NULL;
 }
 if( pD3D != NULL)
 {
 pD3D->Release();
 pD3D = NULL;
 }

 return (int) msg.wParam;
}

bool initWindow(HINSTANCE hInstance)
{
 WNDCLASSEX wcex;

 wcex.cbSize = sizeof(WNDCLASSEX);
 wcex.style = CS_HREDRAW | CS_VREDRAW;
 wcex.lpfnWndProc = (WNDPROC)WndProc;
 wcex.cbClsExtra = 0;
 wcex.cbWndExtra = 0;
 wcex.hInstance = hInstance;
 wcex.hIcon = 0;
 wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
 wcex.lpszMenuName = NULL;
 wcex.lpszClassName = "DirectXExample";
 wcex.hIconSm = 0;
 RegisterClassEx(&wcex);

 wndHandle = CreateWindow("DirectXExample", 
 "Ornegimiz", 
 WS_OVERLAPPEDWINDOW,
 CW_USEDEFAULT, 
 CW_USEDEFAULT, 
 640, 
 480, 
 NULL, 
 NULL, 
 hInstance, 
 NULL);
 if (!wndHandle)
 return false;

 ShowWindow(wndHandle, SW_SHOW);
 UpdateWindow(wndHandle);

 return true;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, 
WPARAM wParam, 
 LPARAM lParam)
{
 switch (message) 
 {
 case WM_DESTROY:
 PostQuitMessage(0);
 break;
 }
 return DefWindowProc(hWnd, message, wParam, lParam);
}

bool initDirect3D(HWND hwnd)
{
 if( NULL == ( pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
 {
 lastResult = E_FAIL;
 return false;
 }

 D3DPRESENT_PARAMETERS d3dpp; 
 ZeroMemory( &d3dpp, sizeof(d3dpp) );
 d3dpp.Windowed = TRUE;
 d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
 d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
 d3dpp.BackBufferCount = 1;
 d3dpp.BackBufferHeight = 480;
 d3dpp.BackBufferWidth = 640;
 d3dpp.hDeviceWindow = hwnd;

 if( FAILED( pD3D->CreateDevice( D3DADAPTER_DEFAULT, 
 D3DDEVTYPE_HAL, hwnd,
 D3DCREATE_SOFTWARE_VERTEXPROCESSING,
 &d3dpp, &pd3dDevice ) ) )
 {
 lastResult = E_FAIL;
 return false;
 }

 return true;
}

IDirect3DSurface9* getSurfaceFromBitmap(std::string filename)
{
 HRESULT hResult;
 IDirect3DSurface9* surface = NULL;
 D3DXIMAGE_INFO imageInfo;

 // Get the width and height info from this bitmap
 hResult = D3DXGetImageInfoFromFile(filename.c_str(),
 &imageInfo);
 if FAILED (hResult)
 return NULL;

 hResult = pd3dDevice->CreateOffscreenPlainSurface(
imageInfo.Width,
 imageInfo.Height, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT,
 &surface, NULL);
 if (FAILED(hResult))
 return NULL;

 hResult = D3DXLoadSurfaceFromFile(surface, NULL, NULL,
 filename.c_str(),
 NULL, D3DX_DEFAULT, 0, NULL);
 if (FAILED(hResult))
 return NULL;

 return surface;
}

void Render(void)
{
 if( NULL == pd3dDevice )
 return;

 // Clear the backbuffer to a blue color
 pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET,
 D3DCOLOR_XRGB(0,0,255),
 1.0f, 0 );

 IDirect3DSurface9* backbuffer;
 pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,
 &backbuffer);

 HRESULT hResult = pd3dDevice->StretchRect(bkgrd, NULL,
 backbuffer, NULL,
 D3DTEXF_NONE);
 if (hResult != D3D_OK)
 MessageBox(NULL,"Olmadi", "Hata", MB_OK);

 // Present the backbuffer contents to the display
 pd3dDevice->Present( NULL, NULL, NULL, NULL );
}

DirectX ile Donen Ucgen Yapimi

Etiketler

,



#include <Windows.h>
#include <WindowsX.h>
#include <d3d9.h>
#include <d3dx9.h> 

#define EKRAN_GENISLIK 1152
#define EKRAN_YUKSEKLIK 864
#define TUS(vk_code)((GetAsyncKeyState(vk_code)&0x8000)?1:0)

LPDIRECT3D9 d3d;
LPDIRECT3DDEVICE9 directx;
LPDIRECT3DVERTEXBUFFER9 buffer0=NULL;

void D3DBaslat(HWND hWnd);
void KareGoruntule(void);
void D3DTemzile(void);
void GrafikBaslat(void);

struct CUSTOMVERTEX 
{
 FLOAT X,Y,Z,RHW;
 DWORD COLOR;
};

#define FVF_A (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)

void D3DBaslat(HWND hWnd)
{
 d3d=Direct3DCreate9(D3D_SDK_VERSION);

 D3DPRESENT_PARAMETERS direct3d;

 ZeroMemory(&direct3d,sizeof(direct3d));
 direct3d.Windowed=TRUE;
 direct3d.SwapEffect=D3DSWAPEFFECT_DISCARD;
 direct3d.hDeviceWindow=hWnd;
 direct3d.BackBufferFormat=D3DFMT_X8R8G8B8;
 direct3d.MultiSampleType=D3DMULTISAMPLE_NONE;
 direct3d.MultiSampleQuality=0;
 direct3d.EnableAutoDepthStencil=TRUE;
 direct3d.AutoDepthStencilFormat=D3DFMT_D16;

 d3d->CreateDevice(D3DADAPTER_DEFAULT,
 D3DDEVTYPE_HAL,
 hWnd,
 D3DCREATE_SOFTWARE_VERTEXPROCESSING,
 &direct3d,
 &directx);

 GrafikBaslat();

 directx->SetRenderState(D3DRS_LIGHTING,FALSE);
 directx->SetRenderState(D3DRS_ZENABLE,TRUE);

 return;
}

void KareGoruntule(void)
{
 directx->Clear(0,NULL,
 D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);
 directx->Clear(0,NULL,
 D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0);

 directx->BeginScene();
 directx->SetFVF(FVF_A);

 D3DXMATRIX mView; 

 D3DMatrixLookAtLH(&mView,
 &D3DXVECTOR3(0.0f,0.0f,15.0f),
 &D3DXVECTOR3(0.0f,0.0f,0.0f),
 &D3DXVECTOR3(0.0f,1.0f,0.0f));

 directx->SetTransform(D3DTS_VIEW,&mView);

 D3DXMATRIX mProjection;
 D3DXMatrixPerspectiveFovLH(&mProjection,
 D3DXToRadian(45),
 (FLOAT)EKRAN_GENISLIK/(FLOAT)EKRAN_YUKSEKLIK,1.0f,100.0f);

 directx->SetTransform(D3DTS_PROJECTION,&mProjection);

 D3DXMATRIX mDonusumX;
 D3DXMATRIX mDonusumY;
 D3DXMATRIX mDondur01;
 D3DXMATRIX mDondur02;
 static float index=0.0f;
 index+=0.05f;

 D3DXMatrixTranslation(&mDonusumX,0.0f,0.0f,2.0f);
 D3DXMatrixTranslation(&mDonusumY,0.0f,0.0f,-2.0f);
 D3DXMatrixRotationY(&mDondur01,index);
 D3DXMatrixRotationY(&mDondur02, index+3.14159f);

 directx->SetTransform(D3DTS_WORLD,&(mDonusumX*mDondur01));
 directx->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);

 directx->SetTransform(D3DTS_WORLD,&(mDonusumX*mDondur02));
 directx->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);

 directx->SetTransform(D3DTS_WORLD,&(mDonusumY*mDondur01));
 directx->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);

 directx->SetTransform(D3DTS_WORLD,&(mDonusumY*mDondur02));
 directx->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);

 directx->SetStreamSource(0,buffer0,0,sizeof(CUSTOMVERTEX));

 directx->EndScene();

 directx->Present(0,0,0,0);

 return;
}

void D3DTemizle(void)
{
 buffer0->Release();
 directx->Release();
 d3d->Release();

 return;
}

void GrafikBaslat(void)
{
 CUSTOMVERTEX noktalar[]=
 {
 {3.0f,-3.0f,0.0f,D3DCOLOR_XRGB(0,0,255),},
 {0.0f,3.0f,0.0f,D3DCOLOR_XRGB(0,255,0),},
 {-3.0f,-3.0f,0.0f,D3DCOLOR_XRGB(255,0,0),},
 };

 directx->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),
 0,
 FVF_A,
 D3DPOOL_MANAGED,
 &buffer0,
 NULL);

 VOID* pVoid;

 buffer0->Lock(0,0,(void**)&pVoid,0);
 memcpy(pVoid,noktalar,sizeof(noktalar));
 buffer0->Unlock();

 return;
}

LRESULT CALLBACK WindowProc(HWND hWnd,UINT message,
 WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,
 HINSTANCE hPrevInstance,
 LPSTR lpCmdLine,
 int nCmdShow)
{
 HWND hWnd;
 WNDCLASSEX ps;

 ZeroMemory(&ps,sizeof(WNDCLASSEX));
 ps.cbSize=sizeof(WNDCLASSEX);
 ps.style=CS_HREDRAW|CS_VREDRAW;
 ps.lpfnWndProc=(WNDPROC)WindowProc;
 ps.hInstance=hInstance;
 ps.hCursor=LoadCursor(NULL,IDC_ARROW);
 ps.hbrBackground=(HBRUSH)COLOR_WINDOW;
 ps.lpszClassName=L"PencereSinifi01";

 RegisterClassEx(&ps);

 hWnd=CreateWindowEx(NULL,
 L"PencereSinifi01",
 L"Ilk Direct3D programimiz by HuluCPlusPlus",
 WS_EX_TOPMOST|WS_POPUP,
 0,0,
 EKRAN_GENISLIK,
 EKRAN_YUKSEKLIK,
 NULL,NULL,
 hInstance,NULL);

 ShowWindow(hWnd, nCmdShow);

 D3DBaslat(hWnd);

 MSG mesaj;

 while(TRUE)
 {
 DWORD baslangic_noktasi=GetTickCount();

 if(PeekMessage(&mesaj,NULL,0,0,PM_REMOVE))
 {
 if(mesaj.message==WM_QUIT)
 {
 break;
 }

 TranslateMessage(&mesaj);
 DispatchMessage(&mesaj);
 }

 KareGoruntule();

 if(TUS(VK_ESCAPE))
 PostMessage(hWnd,WM_DESTROY,0,0);

 if(TUS(VK_DOWN))
 {
 /*kare_goruntule();*/

 directx->Clear(0,NULL,D3DCLEAR_TARGET,
 D3DCOLOR_XRGB(0,0,0),1.0f,0);

 directx->BeginScene();

 directx->EndScene();

 directx->Present(NULL,NULL,NULL,NULL);

 }

 if(TUS(VK_UP))
 {
 /*kare_goruntule();*/

 directx->Clear(0,NULL,D3DCLEAR_TARGET,
 D3DCOLOR_XRGB(100,50,200),1.0f,0);

 directx->BeginScene();

 directx->EndScene();

 directx->Present(NULL,NULL,NULL,NULL);

 }

 while((GetTickCount()-baslangic_noktasi)<25);
 }

 D3DTemizle();

 return mesaj.wParam;
}

LRESULT CALLBACK WindowProc(HWND hWnd,
 UINT message,
 WPARAM wParam,
 LPARAM lParam)
{
 switch(message)
 {
 case WM_DESTROY:
 {
 PostQuitMessage(0);
 return 0;
 }break;
 }

 return DefWindowProc(hWnd,
 message,
 wParam,
 lParam);
}

DirectX ile Tam Ekrana Ucgen Cizimi

Etiketler

, ,

#include <Windows.h>
#include <WindowsX.h>
#include <d3d9.h>
#include <time.h>

#define EKRAN_GENISLIK 1152
#define EKRAN_YUKSEKLIK 864
#define TUS(vk_code)((GetAsyncKeyState(vk_code)&0x8000)?1:0)

LPDIRECT3D9 d3d;
LPDIRECT3DDEVICE9 directx;
LPDIRECT3DVERTEXBUFFER9 buffer0=NULL;

int r=100,g=200,b=200;
void D3Dbaslat(HWND hWnd);
void kare_goruntule(void);
void D3Dtemizle(void);
void GrafikBaslat(void);

struct CUSTOMVERTEX
{
 FLOAT X,Y,Z,RHW;
 DWORD COLOR;
};

#define FVF_A (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)

void D3Dbaslat(HWND hWnd)
{
 d3d=Direct3DCreate9(D3D_SDK_VERSION);

 D3DPRESENT_PARAMETERS direct3d;

 ZeroMemory(&direct3d,sizeof(direct3d));
 direct3d.Windowed=FALSE;
 direct3d.SwapEffect=D3DSWAPEFFECT_DISCARD;
 direct3d.hDeviceWindow=hWnd;
 direct3d.BackBufferFormat=D3DFMT_X8R8G8B8;
 direct3d.BackBufferWidth=EKRAN_GENISLIK;
 direct3d.BackBufferHeight=EKRAN_YUKSEKLIK;

 d3d->CreateDevice(D3DADAPTER_DEFAULT,
 D3DDEVTYPE_HAL,
 hWnd,
 D3DCREATE_SOFTWARE_VERTEXPROCESSING,
 &direct3d,
 &directx);

 GrafikBaslat();

 return;
}

void kare_goruntule(void)
{
 srand ( time(NULL) );

 /*r=rand()%255+1;
 b=rand()%255+1;
 g=rand()%255+1;*/
	
 directx->Clear(0,NULL,D3DCLEAR_TARGET,
 D3DCOLOR_XRGB(r,b,g),1.0f,0);

 directx->BeginScene();

 directx->SetFVF(FVF_A);
 directx->SetStreamSource(0,
 buffer0,0,
 sizeof(CUSTOMVERTEX));
 directx->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);

 directx->EndScene();

 directx->Present(NULL,NULL,NULL,NULL);

 return;
}


void D3Dtemizle(void)
{
 buffer0->Release();
 directx->Release();
 d3d->Release();

 return;
}

void GrafikBaslat(void)
{
 CUSTOMVERTEX noktalar[]=
 {
 {320.0f,50.0f,0.5f,1.0f,D3DCOLOR_XRGB(100,40,23),},
 {520.0f,400.0f,0.5f,1.0f,D3DCOLOR_XRGB(20,0,10),},
 {120.0f,400.0f,0.5f,1.0f,D3DCOLOR_XRGB(150,200,200),},
 };

 directx->CreateVertexBuffer(
 3*sizeof(CUSTOMVERTEX),
 0,
 FVF_A,
 D3DPOOL_MANAGED,
 &buffer0,
 NULL);

 VOID* Voidpointer;

 buffer0->Lock(0,0,(void**)&Voidpointer,0);
 memcpy(Voidpointer,noktalar,sizeof(noktalar));
 buffer0->Unlock();

 return;
}

LRESULT CALLBACK WindowProc(HWND hWnd,
 UINT message,
 WPARAM wParam,
 LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,
 HINSTANCE hPrevInstance,
 LPSTR lpCmdLine,
 int nCmdShow)
{
 HWND hWnd;
 WNDCLASSEX ps;

 ZeroMemory(&ps,sizeof(WNDCLASSEX));
 ps.cbSize=sizeof(WNDCLASSEX);
 ps.style=CS_HREDRAW|CS_VREDRAW;
 ps.lpfnWndProc=(WNDPROC)WindowProc;
 ps.hInstance=hInstance;
 ps.hCursor=LoadCursor(NULL,IDC_ARROW);
 ps.hbrBackground=(HBRUSH)COLOR_WINDOW;
 ps.lpszClassName=L"PencereSinifi01";

 RegisterClassEx(&ps);

 hWnd=CreateWindowEx(NULL,
 L"PencereSinifi01",
 L"Ilk Direct3D programimiz by HuluCPlusPlus",
 WS_EX_TOPMOST|WS_POPUP,
 0,0,
 EKRAN_GENISLIK,
 EKRAN_YUKSEKLIK,
 NULL,NULL,
 hInstance,NULL);

 ShowWindow(hWnd, nCmdShow);

 D3Dbaslat(hWnd);

 MSG mesaj;

 while(TRUE)
 {
 DWORD baslangic_noktasi=GetTickCount();

 if(PeekMessage(&mesaj,NULL,0,0,PM_REMOVE))
 {
 if(mesaj.message==WM_QUIT)
 {
 break;
 }

 TranslateMessage(&mesaj);
 DispatchMessage(&mesaj);
 }

 kare_goruntule();

 if(TUS(VK_ESCAPE))
 PostMessage(hWnd,WM_DESTROY,0,0);

 if(TUS(VK_DOWN))
 {
 /*kare_goruntule();*/


 directx->Clear(0,NULL,D3DCLEAR_TARGET,
 D3DCOLOR_XRGB(0,0,0),1.0f,0);

 directx->BeginScene();

 directx->EndScene();

 directx->Present(NULL,NULL,NULL,NULL);

 }

 if(TUS(VK_UP))
 {
 /*kare_goruntule();*/


 directx->Clear(0,NULL,D3DCLEAR_TARGET,
 D3DCOLOR_XRGB(100,50,200),1.0f,0);

 directx->BeginScene();

 directx->EndScene();

 directx->Present(NULL,NULL,NULL,NULL);

 }
			


 while((GetTickCount()-baslangic_noktasi)<25);
 }

 D3Dtemizle();

 return mesaj.wParam;
}

LRESULT CALLBACK WindowProc(HWND hWnd,
 UINT message,
 WPARAM wParam,
 LPARAM lParam)
{
 switch(message)
 {
 case WM_DESTROY:
 {
 PostQuitMessage(0);
 return 0;
 }break;
 }

 return DefWindowProc(hWnd,
 message,
 wParam,
 lParam);
}