Результаты поиска
redinard Дата: Вторник, 22 Октября 2013, 22:21 | Сообщение # 281 | Тема: Вопрос-[ответ] по Unity
постоянный участник
Сейчас нет на сайте
подскажите как реализовать в своём меню настройку яркости игры на C#
Я белый и пушистый но имею когти и зубы
Сообщение отредактировал redinard - Вторник, 22 Октября 2013, 22:25
redinard Дата: Вторник, 22 Октября 2013, 11:25 | Сообщение # 282 | Тема: Курс Уроков по Unity от Alcatraz
постоянный участник
Сейчас нет на сайте
замечательные уроки,жаль не все они на C# ((((
Я белый и пушистый но имею когти и зубы
redinard Дата: Пятница, 04 Октября 2013, 02:28 | Сообщение # 283 | Тема: Обсуждение курса "Основы DirectX"
постоянный участник
Сейчас нет на сайте
запили файл в папку проэкта и вызывай его оттудаДобавлено (04.10.2013, 02:28) --------------------------------------------- очень интересно,будет ли продолжение уроков ?
Я белый и пушистый но имею когти и зубы
redinard Дата: Четверг, 03 Октября 2013, 21:42 | Сообщение # 284 | Тема: создание карты из тайлов
постоянный участник
Сейчас нет на сайте
нарыл свой старый код на основе которого хочу создать тайловую карту но не могу сообразить как это сделать,кто модет пожалуйста подскажите на примере кода вот мой код http://zalil.ru/34755820
Я белый и пушистый но имею когти и зубы
Сообщение отредактировал redinard - Пятница, 04 Октября 2013, 00:51
redinard Дата: Четверг, 03 Января 2013, 01:32 | Сообщение # 285 | Тема: курсовая
постоянный участник
Сейчас нет на сайте
да причём тут функции,мне фракталы сами готовые нужны были чтобы я их просто подключил,но уже всё это не важно,я уже сделал
Я белый и пушистый но имею когти и зубы
redinard Дата: Среда, 19 Декабря 2012, 19:36 | Сообщение # 286 | Тема: курсовая
постоянный участник
Сейчас нет на сайте
с первой своей задачей спрвился,перевёл в бинарный код,кодировал,применил метод Хафмана,теперь осталось декодировать,мозг уже просто отрубается помогите пожалуйста,метод RLE,код привожу: Code
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; TCanvas *FPC; static int W1,H1; char P[200][200]={0}; char D[40000]={0}; int matr[40000]={0}; int len; Graphics::TBitmap *b; struct el{ el *top,*le,*ri; int count; char c; }pus,*head=0; int count=0,count1=0; int code[10000000],decode[10000]; int fa[10000]; void swap(el *hh,el *element){ el *asd,*dsa; asd=hh->top; dsa=element->top; if (asd==dsa&&hh!=element){ if (asd->le==hh){ asd->le=element; dsa->ri=hh; } else{dsa->le=hh;asd->ri=element;}return;} if (asd->le==hh) asd->le=element; if (asd->ri==hh) asd->ri=element; if (dsa->le==element) dsa->le=hh; if (dsa->ri==element) dsa->ri=hh; element->top=asd; hh->top=dsa; }; int scan2(el *element,el *head){ el *temp; int x=0; if (element->count==0) element=element->top; while(element!=head){ temp=element->top; if (temp->ri==element) fa[x]=1; else fa[x]=0; x++; element=temp;} return x; } el *scan1(el *element,el *head){ el *headl=0,*headr=0; if (head==element) return head; if ((head->count==element->count)&&(head->c!=char(4))) return head; if (head->ri!=0) headr=scan1(element,head->ri); if (head->le!=0) headl=scan1(element,head->le); if (headr==0) return headl; return headr; } void trans(el *element,el *head){ el* hh; if (element==head){element->count++; return;} hh=scan1(element,head); swap(hh,element); element->count++; trans(element->top,head); return; } el *scan(el *head,char c){ el *headl=head,*headr=head; if (head->c==c) return head; if (head->ri)headr=scan(head->le,c); if (head->le)headl=scan(head->ri,c); if (headr!=head) return headr; if (headl!=head) return headl; return head->top;} el *dob(el element,el *head){ el *neww; if (!head){ head=(new el); head->count=element.count; head->c=element.c; head->top=0; head->le=0; head->ri=0; return head; } if (!(neww=scan(head,element.c)))neww=scan(head,char(1)); if ((neww->c==element.c)&&(neww->c!=char(1))){return head;} neww->le=(new el); neww->ri=(new el); neww->le->count=0; neww->le->c=char(1); neww->le->top=neww; neww->le->le=0; neww->le->ri=0; neww->ri->count=element.count; neww->ri->c=element.c; neww->ri->top=neww; neww->ri->le=0; neww->ri->ri=0; neww->count=0; neww->c=char(4); return head; } el *travel(int *x,el *head){ (*x)++; if (head->le==0&&head->ri==0) return head; if (code[*x]==1) return travel(x,head->ri); if (code[*x]==0) return travel(x,head->le); } char readasc(int x){ char c; c=0; for(int i=x+6;i>=x;i--) c=c*2+code[i]; return c;} void dec(int code[1000000]){ int i,j,k,x; el *element; pus.count=0; pus.c=char(1); head=0; head=dob(pus,head); el lol; lol.le=0; lol.ri=0; lol.count=0; lol.c=char(4); lol.c=readasc(0); decode[count1++]=lol.c; dob(lol,head); element=scan(head,lol.c); trans(element,head); x=6; while (1){ element=travel(&x,head); if (element->c==char(1)){lol.c=readasc(x); if (lol.c==char(2)) break; x+=6; decode[count1++]=lol.c; dob(lol,head); element=scan(head,lol.c); trans(element,head);} else{decode[count1++]=element->c; trans(element,head);x--;} }} //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { int x=0; } //------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { W1=PaintBox1->Width; H1=PaintBox1->Height; //FPC=new Graphics::TCanvas; } //--------------------------------------------------------------------------- // void __fastcall TForm1::Button2Click(TObject *Sender) { OpenDialog1->Filter="*.bmp"; OpenDialog1->InitialDir="C:\\"; if (OpenDialog1->Execute()) { b=new Graphics::TBitmap; b->LoadFromFile(OpenDialog1->FileName); for(int i=0;i<W1;i++) for(int j=0;j<H1;j++) Form1->PaintBox1->Canvas->Pixels[i][j]=b->Canvas->Pixels[i][j]; } //PaintBox1->Repaint(); //delete b; } //--------------------------------------------------------------------------- void __fastcall TForm1::PaintBox1Paint(TObject *Sender) { W1=PaintBox1->Width; H1=PaintBox1->Height; Form1->PaintBox1->Canvas->Rectangle(Rect(0,0,W1,H1)); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { el El1,*element,*head; El1.le=0; El1.ri=0; El1.count=0; El1.c=char(1); head=dob(El1,0); count=0; //======================================== for(int i=0;i<W1;i++) { for(int j=0;j<H1;j++) if (Form1->PaintBox1->Canvas->Pixels[i][j] == clWhite) P[i][j]='0' ; else P[i][j]='1'; Form1->Memo1->Lines->Add(P[i]); } int l=0; for(int i=0;i<W1;i++) for(int j=0;j<H1;j++) D[l++]=P[i][j]; len=0; char c; c=D[0]; int k=0,i; for (i=0;i<l;i++) { if (c==D[i]) { k++; } else { c=D[i]; matr[len++]=k; k=1; } } matr[len++]=k; //====================================== for(int i=0;i<len;i++){ El1.c=matr[i-1]; dob(El1,head); element=scan(head,matr[i-1]); int f=scan2(element,head); int R=f-1; for(int j=R;j>=0;j--) { code[count++]=fa[j];} if (element->count==0){ int f=(int)matr[i-1]; for(int qwe=0;qwe<=6;qwe++){ code[count++]=f%2; f=f/2;}} //printt(head,0); trans(element,head); } for (i=0;i<len;i++) Form1->Memo1->Lines->Add(IntToStr(matr[i])); for (i=0;i<count;i++) Form1->Memo1->Lines->Add(IntToStr(code[i])); //массив matr закодировать методом Хафмана //сделать декодирование полученного массива и вывести его на новый пэйнтбокс } //---------------------------------------------------------------------------
пишу на Builder 6Добавлено (19.12.2012, 19:36) --------------------------------------------- вопрос с курсачём закрыт,я сдал его,теперь мне интересно где можно скачать фракталы ?
Я белый и пушистый но имею когти и зубы
redinard Дата: Понедельник, 10 Декабря 2012, 22:24 | Сообщение # 287 | Тема: курсовая
постоянный участник
Сейчас нет на сайте
народ обьясните я получил задание создать программу сжатия чёрно-белого изображения, алгоритм LZW или jBig,я не могу понять как мне перевести изображение в двоичный код для работы над ним,подскажите пожалуйста как это сделать
Я белый и пушистый но имею когти и зубы
redinard Дата: Пятница, 16 Ноября 2012, 01:17 | Сообщение # 288 | Тема: Проблема с компиляцией directx
постоянный участник
Сейчас нет на сайте
Я белый и пушистый но имею когти и зубы
Сообщение отредактировал redinard - Пятница, 16 Ноября 2012, 02:23
redinard Дата: Вторник, 30 Октября 2012, 22:30 | Сообщение # 289 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
изменил код,откомпилировал,работает,но не выдаёт желаемого резкльтата,возникает вопрос почему ? код Dezmond_Graphic.h
#include "Global_Includes.h" //----------------------------------------------------------------------------------- // Глобальные переменные //----------------------------------------------------------------------------------- LPDIRECT3D9 pDirect3D = NULL; // Главный Direct3D обьект LPDIRECT3DDEVICE9 pDirect3DDevice = NULL; // Устройство LPDIRECT3DVERTEXBUFFER9 pBufferVershin = NULL; // Буфер вершин LPDIRECT3DINDEXBUFFER9 pBufferIndex = NULL; // Индексный буфер LPDIRECT3DTEXTURE9 pTextura001 = NULL; // Текстyра 1 LPDIRECT3DTEXTURE9 pTextura002 = NULL; // Текстyра 2 LPD3DXFONT pFont = NULL; // Шрифт Diect3D RECT Rec; // Прямоугольник HFONT hFont; // Шрифт struct CUSTOMVERTEX { FLOAT x, y, z; //кординаты FLOAT nx, ny, nz; //нормали FLOAT tu, tv; //техтура }; #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1) // Формат вершин //----------------------------------------------------------------------------------- // Функция // InitialDirect3D() // Инициализация Direct3D //----------------------------------------------------------------------------------- HRESULT InitialDirect3D( HWND hwnd ) { if( NULL == ( pDirect3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL; D3DDISPLAYMODE Display; if( FAILED( pDirect3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &Display ) ) ) return E_FAIL; D3DPRESENT_PARAMETERS Direct3DParametr; //обект параметров представления Direct3DParametr ZeroMemory( &Direct3DParametr, sizeof(Direct3DParametr) );//очищает создаваемую структуру от мусора Direct3DParametr.Windowed = FALSE;//видеорежим используемый нашим приложением Direct3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD;//параметр опредиления размеров буфера Direct3DParametr.BackBufferFormat = Display.Format;//формат поверхности заднего буфера Direct3DParametr.EnableAutoDepthStencil = TRUE;//значение показывающее возможность создания Z буфера Direct3DParametr.AutoDepthStencilFormat = D3DFMT_D16;//формат поверхности Z буфера Direct3DParametr.BackBufferWidth = GetSystemMetrics(SM_CXSCREEN);; Direct3DParametr.BackBufferHeight = GetSystemMetrics(SM_CYSCREEN); Direct3DParametr.BackBufferCount = 3; Direct3DParametr.FullScreen_RefreshRateInHz = Display.RefreshRate; if( FAILED( pDirect3D -> CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &Direct3DParametr, &pDirect3DDevice ) ) ) return E_FAIL; // Включаем отсеченние Direct3D pDirect3DDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CW ); // Подключаем Z буфер pDirect3DDevice->SetRenderState (D3DRS_ZENABLE, D3DZB_TRUE); return S_OK; } //--------------------------------------------------------------------------------------- // Функция // InitialObject() // Иннициализирует вершины //--------------------------------------------------------------------------------------- HRESULT InitialObject() { CUSTOMVERTEX Vershin[] = { // x y z nx ny nz tu tv { 1.0f,-1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 1.0f, 1.0f,}, //А { 1.0f, 1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 0.0f, 1.0f,}, //В { -1.0f, 1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 0.0f, 0.0f,}, //С { -1.0f,-1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 1.0f, 0.0f,}, //D { -1.0f,-1.0f,-1.0f,-1.0f, 0.0f, 0.0f, 1.0f, 1.0f,}, //A2 { -1.0f, 1.0f,-1.0f,-1.0f, 0.0f, 0.0f, 0.0f, 1.0f,}, //B2 { -1.0f, 1.0f, 1.0f,-1.0f, 0.0f, 0.0f, 0.0f, 0.0f,}, //C2 { -1.0f,-1.0f, 1.0f,-1.0f, 0.0f, 0.0f, 1.0f, 0.0f,}, //D2 { -1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,}, //A3 { -1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f,}, //B3 { 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,}, //C3 { 1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f,}, //D3 { 1.0f,-1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f,}, //A4 { 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f,}, //B4 { 1.0f, 1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,}, //C4 { 1.0f,-1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f,}, //D4 { 1.0f,-1.0f,-1.0f, 0.0f,-1.0f, 0.0f, 1.0f, 1.0f,}, //A5 { -1.0f,-1.0f,-1.0f, 0.0f,-1.0f, 0.0f, 0.0f, 1.0f,}, //B5 { -1.0f,-1.0f, 1.0f, 0.0f,-1.0f, 0.0f, 0.0f, 0.0f,}, //C5 { 1.0f,-1.0f, 1.0f, 0.0f,-1.0f, 0.0f, 1.0f, 0.0f,}, //D5 { 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f,}, //A6 { -1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f,}, //B6 { -1.0f, 1.0f,-1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f,}, //C6 { 1.0f, 1.0f,-1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f,}, //D6 // x y z nx ny nz tu tv }; const unsigned short Index[]={ 0,1,2, 2,3,0, 4,5,6, 6,7,4, 8,9,10, 10,11,8, 12,13,14, 14,15,12, 16,17,18, 18,19,16, 20,21,22, 22,23,20, }; // Загружаем текстру if( FAILED( D3DXCreateTextureFromFile( pDirect3DDevice, L"Directx.jpg", &pTextura001 ) ) ) return E_FAIL; // Создаем буфер вершин if( FAILED( pDirect3DDevice->CreateVertexBuffer( 36 * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT, &pBufferVershin, NULL ) ) ) return E_FAIL; //Блокируем VOID* pBV; if( FAILED( pBufferVershin->Lock( 0, sizeof(Vershin), (void**)&pBV, 0 ) ) ) return E_FAIL; //Копируем memcpy( pBV, Vershin, sizeof(Vershin) ); // Разблокируем pBufferVershin->Unlock(); // Создаем индексный буфер pDirect3DDevice->CreateIndexBuffer( 36 * sizeof(Index), 0, D3DFMT_INDEX16, D3DPOOL_DEFAULT,&pBufferIndex, NULL); //Блокируем VOID* pBI; pBufferIndex->Lock( 0, sizeof(Index) , (void**)&pBI, 0 ); //Копируем memcpy( pBI, Index, sizeof(Index) ); // Разблокируем pBufferIndex->Unlock(); return S_OK; } //----------------------------------------------------------------------------- // Функция // Matrix() // Мировая матрица, матрица вида, матрица проекции //----------------------------------------------------------------------------- VOID Matrix() { D3DXMATRIX MatrixWorld, MatrixWorldX, MatrixWorldY; // Мировая матрица (MatrixWorld) D3DXMATRIX MatrixView; // Матрица вида (MatrixView) D3DXMATRIX MatrixProjection; // Матрица проекции (MatrixProjection) // MatrixWorld UINT Time = timeGetTime() % 5000; FLOAT Angel = Time * (2.0f * D3DX_PI) / 5000.0f; D3DXMatrixRotationX( &MatrixWorldX, 0 ); D3DXMatrixRotationY( &MatrixWorldY, 0 ); D3DXMatrixMultiply(&MatrixWorld,&MatrixWorldX,&MatrixWorldY ); pDirect3DDevice->SetTransform( D3DTS_WORLD,&MatrixWorld ); // MatrixView D3DXMatrixLookAtLH( &MatrixView, &D3DXVECTOR3 ( 0.0f, 0.0f,-8.0f ), &D3DXVECTOR3 ( 0.0f, 0.0f, 0.0f ), &D3DXVECTOR3 ( 0.0f, 1.0f, 0.0f ) ); pDirect3DDevice->SetTransform( D3DTS_VIEW, &MatrixView ); // MatrixProjection D3DXMatrixPerspectiveFovLH( &MatrixProjection, D3DX_PI/4, 1.0f, 1.0f, 100.0f ); pDirect3DDevice->SetTransform( D3DTS_PROJECTION, &MatrixProjection ); } //---------------------------------------------------------------------------------- // Функция // LightMaterial() // Инициализируем Свет и Материал //----------------------------------------------------------------------------------- VOID LightMaterial() { D3DMATERIAL9 Material; // Материал D3DLIGHT9 Light; // Свет // Установим материал ZeroMemory( &Material, sizeof(D3DMATERIAL9) ); Material.Diffuse.r = Material.Ambient.r = 1.0f; Material.Diffuse.g = Material.Ambient.g = 1.0f; Material.Diffuse.b = Material.Ambient.b = 1.0f; Material.Diffuse.a = Material.Ambient.a = 1.0f; pDirect3DDevice->SetMaterial( &Material ); D3DXVECTOR3 VectorDir; // Установим свет ZeroMemory( &Light, sizeof(D3DLIGHT9) ); Light.Type = D3DLIGHT_DIRECTIONAL; Light.Diffuse.r = 1.0f; Light.Diffuse.g = 1.0f; Light.Diffuse.b = 1.0f; Light.Range = 1000.0f; // Установим нормаль VectorDir = D3DXVECTOR3(0.0f, 0.0f,1.0f), D3DXVec3Normalize( (D3DXVECTOR3*)&Light.Direction, &VectorDir ); pDirect3DDevice->SetLight( 0, &Light ); pDirect3DDevice->LightEnable( 0, TRUE ); pDirect3DDevice->SetRenderState( D3DRS_LIGHTING, TRUE ); pDirect3DDevice->SetRenderState( D3DRS_AMBIENT, 0 ); } //-------------------------------------------------------------------------------------- // Функция // DrawMyText() // Выводит текст на экран //-------------------------------------------------------------------------------------- VOID DrawMyText(LPDIRECT3DDEVICE9 pDirect3DDevice,HFONT hFont, char* StrokaTexta,int x,int y,int x1,int y1,D3DCOLOR MyColor) { MyColor = D3DCOLOR_ARGB(250,250,250,50); // Создаем шрифт D3DXCreateFont(pDirect3DDevice,30,10,FW_NORMAL,0,FALSE,1,0,0,DEFAULT_PITCH|FF_MODERN,L"Arial",&pFont); // Координаты прямоугольника Rec.left = x; Rec.top = y; Rec.right = x1; Rec.bottom = y1; // Вывод текста pFont->DrawText(NULL,L"Нерода Н.Н.", -1, &Rec, DT_WORDBREAK, MyColor); // удаляем pFont->Release(); } //----------------------------------------------------------------------------------- // Функция // RenderingDirect3D() // Рисуем //----------------------------------------------------------------------------------- VOID RenderingDirect3D( int iXPos, int iYPos, float fXSize, float fYSize, int iTexture) { D3DXMATRIX matWorld, matRotation, matTranslation, matScale; float fXPos, fYPos; // Set default position,scale,rotation D3DXMatrixIdentity( &matTranslation ); // Scale the sprite D3DXMatrixScaling( &matScale, fXSize, fYSize, 1.0f ); D3DXMatrixMultiply( &matTranslation, &matTranslation, &matScale ); // Rotate the sprite D3DXMatrixRotationZ( &matRotation, 0.0f ); D3DXMatrixMultiply( &matWorld, &matTranslation, &matRotation ); // Calculate the position in screen-space fXPos = (float)(-(GetSystemMetrics(SM_CXSCREEN)/2)+iXPos); fYPos = (GetSystemMetrics(SM_CYSCREEN)/2)-fYSize-iYPos; // Move the sprite matWorld._41 = fXPos; // X matWorld._42 = fYPos; // Y // Поток, формат, индексный буфер pDirect3DDevice->SetStreamSource( 0, pBufferVershin, 0, sizeof(CUSTOMVERTEX) ); pDirect3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); pDirect3DDevice->SetIndices(pBufferIndex); // Установки для первой текстуры pDirect3DDevice->SetTexture (0, pTextura001); pDirect3DDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 ); pDirect3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); pDirect3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); } void vRender( void ) { int iX; int iY; int iCurTile; int iBufferPos; char szOutput[ 256 ]; if(pDirect3DDevice == NULL) // Проверяем ошибки return; // Чистим задний буфер pDirect3DDevice->Clear( 0, NULL, D3DCLEAR_TARGET| D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(60,100,150), 1.0f, 0 ); // Начало сцены, здесь происходит прорисовка сцены pDirect3DDevice->BeginScene(); // Свет и материал LightMaterial(); // Матрицы Matrix(); // Top to bottom for( iY = 0; iY < g_iTilesHigh; iY++ ) { // Left to right for( iX = 0; iX < g_iTilesWide; iX++ ) { // Calculate buffer offset iBufferPos = iX+g_iXPos+((iY+g_iYPos)*g_iMapWidth); // Get the proper tile iCurTile = g_iTileMap[ iBufferPos ]; // Display the tile RenderingDirect3D( ( iX * g_iTileSize ), ( iY * g_iTileSize ), (float)g_iTileSize, (float)g_iTileSize, iCurTile ); } } // Вывод объекта pDirect3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 36, 0, 12); // Вывод текста DrawMyText(pDirect3DDevice, hFont,"Урок 11\nМультитекстурирование\nДля выхода нажмите клавишу Esc ", 10,10,500,700,D3DCOLOR_ARGB(250,250,250,50)); // Конец сцены pDirect3DDevice->EndScene(); // Выводим на экран pDirect3DDevice->Present( NULL, NULL, NULL, NULL ); } //----------------------------------------------------------------------------------- // Функция // DeleteDirect3D() // Освобождает захваченные ресурсы //----------------------------------------------------------------------------------- VOID DeleteDirect3D() { if( pTextura002 != NULL ) pTextura002->Release(); if( pTextura001 != NULL ) pTextura001->Release(); if( pBufferIndex != NULL) pBufferIndex->Release(); if( pBufferVershin != NULL) pBufferVershin->Release(); if( pDirect3DDevice != NULL) pDirect3DDevice->Release(); if( pDirect3D != NULL) pDirect3D->Release(); } //----------------------------------------------------------------------------------- // Функция // MainWinProc() // Здесь происходит обработка сообщений //----------------------------------------------------------------------------------- LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch(msg) { case WM_DESTROY: { DeleteDirect3D(); PostQuitMessage(0); return(0); } case WM_KEYDOWN: { if(wparam==VK_ESCAPE) PostQuitMessage(0); return 0; } } return DefWindowProc(hwnd, msg, wparam, lparam); }
Global_Includes.h window.cpp
#include "Dezmond_Graphic.h" //----------------------------------------------------------------------------------- // Функция // WinMain // Входная точка приложения //----------------------------------------------------------------------------------- int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { WNDCLASSEX windowsclass; // Создаем класс HWND hwnd; // Создаем дескриптор окна MSG msg; // Идентификатор сообщения // Определим класс окна WNDCLASSEX windowsclass.cbSize = sizeof(WNDCLASSEX);// Размер всей структуры windowsclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;//Задание стиля окн windowsclass.lpfnWndProc = MainWinProc;//Наша функция обработки событий windowsclass.cbClsExtra = 0; windowsclass.cbWndExtra = 0; windowsclass.hInstance = hinstance;//Экземпляр приложения windowsclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW); windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);//цвет фона windowsclass.lpszMenuName = NULL;//имя меню windowsclass.lpszClassName = L"WINDOWSCLASS";//Имя класса окна windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // Зарегистрируем класс if (!RegisterClassEx(&windowsclass)) return(0); // Теперь когда класс зарегестрирован можно создать окно if (!(hwnd = CreateWindowEx(NULL, // стиль окна L"WINDOWSCLASS", // класс 0, // название окна WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0,0, // левый верхний угол GetSystemMetrics(SM_CXSCREEN),// ширина GetSystemMetrics(SM_CYSCREEN),// высота NULL, // дескриптор родительского окна NULL, // дескриптор меню hinstance, // дескриптор экземпляра приложения NULL))) // указатель на данные окна return 0; if( SUCCEEDED( InitialDirect3D( hwnd ) ) ) { if( SUCCEEDED( InitialObject( ) ) ) { ShowWindow( hwnd, SW_SHOWDEFAULT ); UpdateWindow( hwnd ); ZeroMemory( &msg, sizeof(msg)); while( msg.message!=WM_QUIT) { if(PeekMessage( &msg, NULL,0,0,PM_REMOVE )) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else vRender(); } } } return 0; }
Добавлено (30.10.2012, 01:01) --------------------------------------------- в результате должна быть тайловая карта
Добавлено (30.10.2012, 22:30) --------------------------------------------- попытался изменить матрицу вершин,но не какого результата
Я белый и пушистый но имею когти и зубы
Сообщение отредактировал redinard - Вторник, 30 Октября 2012, 01:00
redinard Дата: Среда, 17 Октября 2012, 14:21 | Сообщение # 290 | Тема: Мануал по созданию игры
постоянный участник
Сейчас нет на сайте
почитай "Станислав Горнаков - DirectX 9. Уроки программирования на C++" и Дирка Хендрикса и Марка Ли,для начала этого более чем достаточно
Я белый и пушистый но имею когти и зубы
redinard Дата: Среда, 17 Октября 2012, 14:18 | Сообщение # 291 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
под тайловыми картами я подрозумеваю карты состоящие из блоков одинакового размера,к примеру мне необходимо создать карту 100х100 состоящую из тайлов 16х16, вопрос состоит в том как это сделать ?Добавлено (17.10.2012, 14:18) --------------------------------------------- у меня есть код с их реализацией,но хочется самому сделать,мне нужна подсказка как это делается
Я белый и пушистый но имею когти и зубы
redinard Дата: Среда, 17 Октября 2012, 14:09 | Сообщение # 292 | Тема: Мануал по созданию игры
постоянный участник
Сейчас нет на сайте
за книгу Джима Адамса даже не берись,слишком сложно на таком уровне,я тоже новечёк в этом деле и посоветовал бы тебе поизучать книги по DirectX,а в процессе его изучения ты сам потихоньку будеш понимать как создать игру,вообще книги по созданию игр надо брать только для того чтобы изучить отдельные моменты игры(перемещене,построение квестов и т.д.), а то это будет тупо копипаст и ты ничего не поймёш
Я белый и пушистый но имею когти и зубы
redinard Дата: Среда, 17 Октября 2012, 13:24 | Сообщение # 293 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
впринципе для меня не проблемма переделать код под новый SDK,я просто хотел уточнить в чём суть проблеммыДобавлено (17.10.2012, 13:24) ---------------------------------------------Archido , можеш подсказать как строить тайловые карты на примере моего кода
Я белый и пушистый но имею когти и зубы
redinard Дата: Среда, 17 Октября 2012, 12:22 | Сообщение # 294 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
надеюсь всё же кто-нибудь прочитает вот кстати оригенал кода
//----------------------------------------------------------------------------------- // MultiTextura.CPP // Используем текстурy //----------------------------------------------------------------------------------- #pragma comment(lib, "winmm.lib") #pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.lib") #include <windows.h> // Подключаем заголовочный файл Windows #include <d3d9.h> // Подключаем заголовочный файл DirectX 9 SDK #include <d3dx9.h> // Подключаем из D3DX утилит для работы с матрицами #include <mmsystem.h> // Подключаем системную библеотеку #include <d3dx9core.h> // Подключаем системный заголовочный файл //----------------------------------------------------------------------------------- // Глобальные переменные //----------------------------------------------------------------------------------- LPDIRECT3D9 pDirect3D = NULL; // Главный Direct3D обьект LPDIRECT3DDEVICE9 pDirect3DDevice = NULL; // Устройство LPDIRECT3DVERTEXBUFFER9 pBufferVershin = NULL; // Буфер вершин LPDIRECT3DINDEXBUFFER9 pBufferIndex = NULL; // Индексный буфер LPDIRECT3DTEXTURE9 pTextura001 = NULL; // Текстyра 1 LPDIRECT3DTEXTURE9 pTextura002 = NULL; // Текстyра 2 LPD3DXFONT pFont = NULL; // Шрифт Diect3D RECT Rec; // Прямоугольник HFONT hFont; // Шрифт struct CUSTOMVERTEX { FLOAT x, y, z; //кординаты FLOAT nx, ny, nz; //нормали FLOAT tu, tv; //техтура }; #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1) // Формат вершин //----------------------------------------------------------------------------------- // Функция // InitialDirect3D() // Инициализация Direct3D //----------------------------------------------------------------------------------- HRESULT InitialDirect3D( HWND hwnd ) { if( NULL == ( pDirect3D = Direct3DCreate9( D3D_SDK_VERSION ) ) ) return E_FAIL; D3DDISPLAYMODE Display; if( FAILED( pDirect3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &Display ) ) ) return E_FAIL; D3DPRESENT_PARAMETERS Direct3DParametr; ZeroMemory( &Direct3DParametr, sizeof(Direct3DParametr) ); Direct3DParametr.Windowed = FALSE; Direct3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD; Direct3DParametr.BackBufferFormat = Display.Format; Direct3DParametr.EnableAutoDepthStencil = TRUE; Direct3DParametr.AutoDepthStencilFormat = D3DFMT_D16; Direct3DParametr.BackBufferWidth = GetSystemMetrics(SM_CXSCREEN);; Direct3DParametr.BackBufferHeight = GetSystemMetrics(SM_CYSCREEN); Direct3DParametr.BackBufferCount = 3; Direct3DParametr.FullScreen_RefreshRateInHz = Display.RefreshRate; if( FAILED( pDirect3D -> CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &Direct3DParametr, &pDirect3DDevice ) ) ) return E_FAIL; // Включаем отсеченние Direct3D pDirect3DDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CW ); // Подключаем Z буфер pDirect3DDevice->SetRenderState (D3DRS_ZENABLE, D3DZB_TRUE); return S_OK; } //--------------------------------------------------------------------------------------- // Функция // InitialObject() // Иннициализирует вершины //--------------------------------------------------------------------------------------- HRESULT InitialObject() { CUSTOMVERTEX Vershin[] = { // x y z nx ny nz tu tv { 1.0f,-1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 1.0f, 1.0f,}, //А { 1.0f, 1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 0.0f, 1.0f,}, //В { -1.0f, 1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 0.0f, 0.0f,}, //С { -1.0f,-1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 1.0f, 0.0f,}, //D { -1.0f,-1.0f,-1.0f,-1.0f, 0.0f, 0.0f, 1.0f, 1.0f,}, //A2 { -1.0f, 1.0f,-1.0f,-1.0f, 0.0f, 0.0f, 0.0f, 1.0f,}, //B2 { -1.0f, 1.0f, 1.0f,-1.0f, 0.0f, 0.0f, 0.0f, 0.0f,}, //C2 { -1.0f,-1.0f, 1.0f,-1.0f, 0.0f, 0.0f, 1.0f, 0.0f,}, //D2 { -1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,}, //A3 { -1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f,}, //B3 { 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,}, //C3 { 1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f,}, //D3 { 1.0f,-1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f,}, //A4 { 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f,}, //B4 { 1.0f, 1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,}, //C4 { 1.0f,-1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f,}, //D4 { 1.0f,-1.0f,-1.0f, 0.0f,-1.0f, 0.0f, 1.0f, 1.0f,}, //A5 { -1.0f,-1.0f,-1.0f, 0.0f,-1.0f, 0.0f, 0.0f, 1.0f,}, //B5 { -1.0f,-1.0f, 1.0f, 0.0f,-1.0f, 0.0f, 0.0f, 0.0f,}, //C5 { 1.0f,-1.0f, 1.0f, 0.0f,-1.0f, 0.0f, 1.0f, 0.0f,}, //D5 { 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f,}, //A6 { -1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f,}, //B6 { -1.0f, 1.0f,-1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f,}, //C6 { 1.0f, 1.0f,-1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f,}, //D6 // x y z nx ny nz tu tv }; const unsigned short Index[]={ 0,1,2, 2,3,0, 4,5,6, 6,7,4, 8,9,10, 10,11,8, 12,13,14, 14,15,12, 16,17,18, 18,19,16, 20,21,22, 22,23,20, }; // Загружаем текстру if( FAILED( D3DXCreateTextureFromFile( pDirect3DDevice, L"Directx.jpg", &pTextura001 ) ) ) return E_FAIL; // Загружаем вторую текстру if( FAILED( D3DXCreateTextureFromFile( pDirect3DDevice, L"Reshetka.bmp", &pTextura002 ) ) ) return E_FAIL; // Создаем буфер вершин if( FAILED( pDirect3DDevice->CreateVertexBuffer( 36 * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT, &pBufferVershin, NULL ) ) ) return E_FAIL; //Блокируем VOID* pBV; if( FAILED( pBufferVershin->Lock( 0, sizeof(Vershin), (void**)&pBV, 0 ) ) ) return E_FAIL; //Копируем memcpy( pBV, Vershin, sizeof(Vershin) ); // Разблокируем pBufferVershin->Unlock(); // Создаем индексный буфер pDirect3DDevice->CreateIndexBuffer( 36 * sizeof(Index), 0, D3DFMT_INDEX16, D3DPOOL_DEFAULT,&pBufferIndex, NULL); //Блокируем VOID* pBI; pBufferIndex->Lock( 0, sizeof(Index) , (void**)&pBI, 0 ); //Копируем memcpy( pBI, Index, sizeof(Index) ); // Разблокируем pBufferIndex->Unlock(); return S_OK; } //----------------------------------------------------------------------------- // Функция // Matrix() // Мировая матрица, матрица вида, матрица проекции //----------------------------------------------------------------------------- VOID Matrix() { D3DXMATRIX MatrixWorld, MatrixWorldX, MatrixWorldY; // Мировая матрица (MatrixWorld) D3DXMATRIX MatrixView; // Матрица вида (MatrixView) D3DXMATRIX MatrixProjection; // Матрица проекции (MatrixProjection) // MatrixWorld UINT Time = timeGetTime() % 5000; FLOAT Angel = Time * (2.0f * D3DX_PI) / 5000.0f; D3DXMatrixRotationX( &MatrixWorldX, 0 ); D3DXMatrixRotationY( &MatrixWorldY, 0 ); D3DXMatrixMultiply(&MatrixWorld,&MatrixWorldX,&MatrixWorldY ); pDirect3DDevice->SetTransform( D3DTS_WORLD,&MatrixWorld ); // MatrixView D3DXMatrixLookAtLH( &MatrixView, &D3DXVECTOR3 ( 0.0f, 0.0f,-8.0f ), &D3DXVECTOR3 ( 0.0f, 0.0f, 0.0f ), &D3DXVECTOR3 ( 0.0f, 1.0f, 0.0f ) ); pDirect3DDevice->SetTransform( D3DTS_VIEW, &MatrixView ); // MatrixProjection D3DXMatrixPerspectiveFovLH( &MatrixProjection, D3DX_PI/4, 1.0f, 1.0f, 100.0f ); pDirect3DDevice->SetTransform( D3DTS_PROJECTION, &MatrixProjection ); } //---------------------------------------------------------------------------------- // Функция // LightMaterial() // Инициализируем Свет и Материал //----------------------------------------------------------------------------------- VOID LightMaterial() { D3DMATERIAL9 Material; // Материал D3DLIGHT9 Light; // Свет // Установим материал ZeroMemory( &Material, sizeof(D3DMATERIAL9) ); Material.Diffuse.r = Material.Ambient.r = 1.0f; Material.Diffuse.g = Material.Ambient.g = 1.0f; Material.Diffuse.b = Material.Ambient.b = 1.0f; Material.Diffuse.a = Material.Ambient.a = 1.0f; pDirect3DDevice->SetMaterial( &Material ); D3DXVECTOR3 VectorDir; // Установим свет ZeroMemory( &Light, sizeof(D3DLIGHT9) ); Light.Type = D3DLIGHT_DIRECTIONAL; Light.Diffuse.r = 1.0f; Light.Diffuse.g = 1.0f; Light.Diffuse.b = 1.0f; Light.Range = 1000.0f; // Установим нормаль VectorDir = D3DXVECTOR3(0.0f, 0.0f,1.0f), D3DXVec3Normalize( (D3DXVECTOR3*)&Light.Direction, &VectorDir ); pDirect3DDevice->SetLight( 0, &Light ); pDirect3DDevice->LightEnable( 0, TRUE ); pDirect3DDevice->SetRenderState( D3DRS_LIGHTING, TRUE ); pDirect3DDevice->SetRenderState( D3DRS_AMBIENT, 0 ); } //-------------------------------------------------------------------------------------- // Функция // DrawMyText() // Выводит текст на экран //-------------------------------------------------------------------------------------- VOID DrawMyText(LPDIRECT3DDEVICE9 pDirect3DDevice,HFONT hFont, char* StrokaTexta,int x,int y,int x1,int y1,D3DCOLOR MyColor) { MyColor = D3DCOLOR_ARGB(250,250,250,50); // Создаем шрифт D3DXCreateFont(pDirect3DDevice,30,10,FW_NORMAL,0,FALSE,1,0,0,DEFAULT_PITCH|FF_MODERN,L"Arial",&pFont); // Координаты прямоугольника Rec.left = x; Rec.top = y; Rec.right = x1; Rec.bottom = y1; // Вывод текста pFont->DrawText(NULL,L"StrokaTexta", -1, &Rec, DT_WORDBREAK, MyColor); // удаляем pFont->Release(); } //----------------------------------------------------------------------------------- // Функция // RenderingDirect3D() // Рисуем //----------------------------------------------------------------------------------- VOID RenderingDirect3D() { if(pDirect3DDevice == NULL) // Проверяем ошибки return; // Чистим задний буфер pDirect3DDevice->Clear( 0, NULL, D3DCLEAR_TARGET| D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(60,100,150), 1.0f, 0 ); // Начало сцены, здесь происходит прорисовка сцены pDirect3DDevice->BeginScene(); // Свет и материал LightMaterial(); // Матрицы Matrix(); // Поток, формат, индексный буфер pDirect3DDevice->SetStreamSource( 0, pBufferVershin, 0, sizeof(CUSTOMVERTEX) ); pDirect3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); pDirect3DDevice->SetIndices(pBufferIndex); // Установки для первой текстуры pDirect3DDevice->SetTexture (0, pTextura001); pDirect3DDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 ); pDirect3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); pDirect3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); // Установки для второй текстуры pDirect3DDevice->SetTexture (1, pTextura002); pDirect3DDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 0 ); pDirect3DDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE); pDirect3DDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE); // Вывод объекта pDirect3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 36, 0, 12); // Вывод текста DrawMyText(pDirect3DDevice, hFont,"Урок 11\nМультитекстурирование\nДля выхода нажмите клавишу Esc ", 10,10,500,700,D3DCOLOR_ARGB(250,250,250,50)); // Конец сцены pDirect3DDevice->EndScene(); // Выводим на экран pDirect3DDevice->Present( NULL, NULL, NULL, NULL ); } //----------------------------------------------------------------------------------- // Функция // DeleteDirect3D() // Освобождает захваченные ресурсы //----------------------------------------------------------------------------------- VOID DeleteDirect3D() { if( pTextura002 != NULL ) pTextura002->Release(); if( pTextura001 != NULL ) pTextura001->Release(); if( pBufferIndex != NULL) pBufferIndex->Release(); if( pBufferVershin != NULL) pBufferVershin->Release(); if( pDirect3DDevice != NULL) pDirect3DDevice->Release(); if( pDirect3D != NULL) pDirect3D->Release(); } //----------------------------------------------------------------------------------- // Функция // MainWinProc() // Здесь происходит обработка сообщений //----------------------------------------------------------------------------------- LRESULT CALLBACK MainWinProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch(msg) { case WM_DESTROY: { DeleteDirect3D(); PostQuitMessage(0); return(0); } case WM_KEYDOWN: { if(wparam==VK_ESCAPE) PostQuitMessage(0); return 0; } } return DefWindowProc(hwnd, msg, wparam, lparam); } //----------------------------------------------------------------------------------- // Функция // WinMain // Входная точка приложения //----------------------------------------------------------------------------------- int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) { WNDCLASSEX windowsclass; // Создаем класс HWND hwnd; // Создаем дескриптор окна MSG msg; // Идентификатор сообщения // Определим класс окна WNDCLASSEX windowsclass.cbSize = sizeof(WNDCLASSEX); windowsclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; windowsclass.lpfnWndProc = MainWinProc; windowsclass.cbClsExtra = 0; windowsclass.cbWndExtra = 0; windowsclass.hInstance = hinstance; windowsclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW); windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); windowsclass.lpszMenuName = NULL; windowsclass.lpszClassName = L"WINDOWSCLASS"; windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // Зарегистрируем класс if (!RegisterClassEx(&windowsclass)) return(0); // Теперь когда класс зарегестрирован можно создать окно if (!(hwnd = CreateWindowEx(NULL, // стиль окна L"WINDOWSCLASS", // класс 0, // название окна WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0,0, // левый верхний угол GetSystemMetrics(SM_CXSCREEN),// ширина GetSystemMetrics(SM_CYSCREEN),// высота NULL, // дескриптор родительского окна NULL, // дескриптор меню hinstance, // дескриптор экземпляра приложения NULL))) // указатель на данные окна return 0; if( SUCCEEDED( InitialDirect3D( hwnd ) ) ) { if( SUCCEEDED( InitialObject( ) ) ) { ShowWindow( hwnd, SW_SHOWDEFAULT ); UpdateWindow( hwnd ); ZeroMemory( &msg, sizeof(msg)); while( msg.message!=WM_QUIT) { if(PeekMessage( &msg, NULL,0,0,PM_REMOVE )) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else RenderingDirect3D(); } } } return 0; }
Добавлено (16.10.2012, 02:13) --------------------------------------------- все я сам разобрался с кодом ! Добавлено (17.10.2012, 12:22) --------------------------------------------- Народ у меня возникла такая проблемма,я давно взял прилогаемый код к одной книге и откомпилировал его с использованием инклудов и либ-файлов взятых уже не помню с какого сайта и всё замечательно компилировалось,сегодня попытался откомпилить вновь с использованием DXSDK_Aug08 и вот что получилось Quote
1>e:\создание игр\элементы игры\рабочие элементы\d3d_mapviewer\main.cpp(278) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> e:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366): см. объявление 'sprintf' 1>e:\создание игр\элементы игры\рабочие элементы\d3d_mapviewer\main.cpp(281) : error C2660: ID3DXFont::DrawTextA: функция не принимает 5 аргументов 1>e:\создание игр\элементы игры\рабочие элементы\d3d_mapviewer\main.cpp(392) : error C2660: D3DXCreateFontA: функция не принимает 3 аргументов 1>Журнал построения был сохранен в "file://e:\создание игр\элементы игры\РАБОЧИЕ ЭЛЕМЕНТЫ\D3D_MapViewer\Debug\BuildLog.htm" 1>D3D_MapViewer - ошибок 2, предупреждений 1 ========== Перестроение всех: успешно: 0, с ошибками: 1, пропущено: 0 ==========
если я подключаю старые инклуды и либы то всё работает нормально,но сейчас я делаю свои проекты на DXSDK_Aug08,и если подключён он и старый DXSDK то код прилогаемый к книге работает,а мой нет,возникает вопрос какой DXSDK будет использовать наиболее рационально ?
Я белый и пушистый но имею когти и зубы
Сообщение отредактировал redinard - Среда, 17 Октября 2012, 12:23
redinard Дата: Понедельник, 15 Октября 2012, 22:55 | Сообщение # 295 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
Я понял,можеш тогда хотябы преобразовать и выложить здесь мой код как ты посоветовал Quote
В первую очередь нужно вынести бОльшую часть кода из заголовочника (.h) в .cpp, в .h файле оставить только объявления ф-ций, глобальные переменные, классы (описание вершин, например), все остальное писать в .cpp
буду очень благодаренДобавлено (10.10.2012, 20:18) --------------------------------------------- возникла ещё проблемма,код компилится, но не работает
#include "Global_Includes.h" //----------------------------------------------------------------------------------- // Глобальные переменные //----------------------------------------------------------------------------------- LPDIRECT3D9 g_pD3D = NULL; // Главный Direct3D обьект LPDIRECT3DDEVICE9 pDirect3DDevice = NULL; // Устройство LPDIRECT3DVERTEXBUFFER9 pBufferVershin = NULL; // Буфер вершин LPDIRECT3DINDEXBUFFER9 pBufferIndex = NULL; // Индексный буфер LPDIRECT3DVERTEXBUFFER9 pVertBuff = NULL; LPDIRECT3DTEXTURE9 pTextura001 = NULL; // Текстyра LPD3DXFONT pFont = NULL; // Шрифт Diect3D RECT Rec; // Прямоугольник HFONT hFont; // Шрифт void DrawMyText(LPDIRECT3DDEVICE9 pDirect3DDevice,HFONT hFont, char* StrokaTexta,int x,int y,int x1, int y1,D3DCOLOR MyColor); void LightMaterial(); void Matrix(); struct CUSTOMVERTEX//структура определяющая формат вершин { float x, y, z;//координаты вершины float nx,ny,nz; //нормали float tu,tv; }; #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1)//формат содержания вершин /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // ИНИЦИАЛИЗАЦИЯ Direct3D // // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// HRESULT InitD3D(HWND hwnd) { if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION))) //создаётся основной указатель на интерфейс IDirect3D9 return E_FAIL; D3DDISPLAYMODE Disp; //структура для соответствия текущих установок дисплея if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Disp))) //получаем текущий формат дисплея return E_FAIL; //параметры показа D3DPRESENT_PARAMETERS d3dpp; //обект параметров представления Direct3DParametr ZeroMemory(&d3dpp, sizeof(d3dpp)); //очищает создаваемую структуру от мусора d3dpp.Windowed = false; //видеорежим используемый нашим приложением d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //параметр опредиления размеров буфера d3dpp.BackBufferFormat = Disp.Format; //формат поверхности заднего буфера d3dpp.EnableAutoDepthStencil = true;//значение показывающее возможность создания Z буфера d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//формат поверхности Z буфера d3dpp.BackBufferWidth = GetSystemMetrics(SM_CXSCREEN);//берём размер разрешения экрана и передаём параметрам d3dpp.BackBufferHeight = GetSystemMetrics(SM_CYSCREEN);// d3dpp.BackBufferCount = 3;// кол-во заданных буферов d3dpp.FullScreen_RefreshRateInHz = Disp.RefreshRate;//частта обновления экрана //создание девайса if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &pDirect3DDevice)))//обект интерфейса устройства return E_FAIL; pDirect3DDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW);//отключить отсечение pDirect3DDevice->SetRenderState(D3DRS_LIGHTING,FALSE);//отключить освещение Direct3D pDirect3DDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);//включаем Z буфер return S_OK; } /////////////////////////////////////////////////////////////////////////////////////////////////// void RenderD3D() { if(pDirect3DDevice==NULL) return; pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(60,100,150), 1.0f, 0); //цвет фона pDirect3DDevice->BeginScene(); //начало сцены //здесь происходит отрисовка сцены Matrix(); LightMaterial(); //здесь происходит отрисовка сцены pDirect3DDevice->SetStreamSource(0, pVertBuff, 0, sizeof(CUSTOMVERTEX)); //Установка формата вершин pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX); pDirect3DDevice->SetIndices(pBufferIndex); pDirect3DDevice->SetTexture( 0,pTextura001); //вывод объекта pDirect3DDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE); pDirect3DDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_MODULATE); pDirect3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,36,0,12); //вывод текаста DrawMyText(pDirect3DDevice,hFont,"текст в DirectX ",10,10,500,700,D3DCOLOR_ARGB(250,250,250,50)); pDirect3DDevice->EndScene(); //конец сцены pDirect3DDevice->Present(NULL, NULL, NULL, NULL); //показать все } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// HRESULT InitVertBuff() //internalObject { //проектируем вертексный буфер CUSTOMVERTEX Vertex[] = { // x y z nx ny nz tu tv { 1.0f,-1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 1.0f, 1.0f,}, //А { 1.0f, 1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 0.0f, 1.0f,}, //В { -1.0f, 1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 0.0f, 0.0f,}, //С { -1.0f,-1.0f,-1.0f, 0.0f, 0.0f,-1.0f, 1.0f, 0.0f,}, //D { -1.0f,-1.0f,-1.0f,-1.0f, 0.0f, 0.0f, 1.0f, 1.0f,}, //A2 { -1.0f, 1.0f,-1.0f,-1.0f, 0.0f, 0.0f, 0.0f, 1.0f,}, //B2 { -1.0f, 1.0f, 1.0f,-1.0f, 0.0f, 0.0f, 0.0f, 0.0f,}, //C2 { -1.0f,-1.0f, 1.0f,-1.0f, 0.0f, 0.0f, 1.0f, 0.0f,}, //D2 { -1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,}, //A3 { -1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f,}, //B3 { 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,}, //C3 { 1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f,}, //D3 { 1.0f,-1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f,}, //A4 { 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f,}, //B4 { 1.0f, 1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,}, //C4 { 1.0f,-1.0f,-1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f,}, //D4 { 1.0f,-1.0f,-1.0f, 0.0f,-1.0f, 0.0f, 1.0f, 1.0f,}, //A5 { -1.0f,-1.0f,-1.0f, 0.0f,-1.0f, 0.0f, 0.0f, 1.0f,}, //B5 { -1.0f,-1.0f, 1.0f, 0.0f,-1.0f, 0.0f, 0.0f, 0.0f,}, //C5 { 1.0f,-1.0f, 1.0f, 0.0f,-1.0f, 0.0f, 1.0f, 0.0f,}, //D5 { 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f,}, //A6 { -1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f,}, //B6 { -1.0f, 1.0f,-1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f,}, //C6 { 1.0f, 1.0f,-1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f,}, //D6 // x y z nx ny nz tu tv }; const unsigned short Index[]={ 0,1,2, 2,3,0, 4,5,6, 6,7,4, 8,9,10, 10,11,8, 12,13,14, 14,15,12, 16,17,18, 18,19,16, 20,21,22, 22,23,20, }; //загружаем текстуру if(FAILED(D3DXCreateTextureFromFile(pDirect3DDevice, L"Directx.jpg",&pTextura001))) return E_FAIL; // | - кол-во вершин прямо пропорционально числу перед sizeof if(FAILED(pDirect3DDevice->CreateVertexBuffer( 36*sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &pVertBuff, NULL))) return E_FAIL; void *pVB; //временный указатель на указатель вертекс буфера if(FAILED(pVertBuff->Lock(0, sizeof(Vertex), (void**)&pVB, 0))) //Блоктровка буфера return E_FAIL; memcpy(pVB, Vertex, sizeof(Vertex)); //копирование данных pVertBuff->Unlock(); //Разблокировка буфера return S_OK; } ///////////////////////////////////////////////// VOID Matrix() { D3DXMATRIX MatrixWorld,MatrixWorldX;//мировая матрица D3DXMATRIX MatrixWorldY,MatrixWorldZ; D3DXMATRIX MatrixView;//матрица вида D3DXMATRIX MatrixProjection;//матрица прекции //мировая матрица UINT Time = timeGetTime()% 5000; FLOAT Angle = Time*(2.0f * D3DX_PI)/5000.0f; D3DXMatrixRotationY(&MatrixWorldY,Angle); D3DXMatrixRotationX(&MatrixWorldX,Angle); D3DXMatrixMultiply(&MatrixWorld,&MatrixWorldX,&MatrixWorldY); pDirect3DDevice->SetTransform(D3DTS_WORLD,&MatrixWorld); //матрица вида D3DXMatrixLookAtLH(&MatrixView,&D3DXVECTOR3(0.0f,0.0f,-8.f), &D3DXVECTOR3(0.0f,0.0f,0.0f), &D3DXVECTOR3(0.0f,1.0f,0.0f)); pDirect3DDevice->SetTransform( D3DTS_VIEW, &MatrixView ); D3DXMatrixPerspectiveFovLH(&MatrixProjection, D3DX_PI/4,1.0f,1.0f,100.0f); //матрица проекции pDirect3DDevice->SetTransform(D3DTS_PROJECTION,&MatrixProjection); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // функция DrawMyText() // вывод текста на экран // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// VOID DrawMyText(LPDIRECT3DDEVICE9 pDirect3DDevice,HFONT hFont, char* StrokaTexta,int x,int y,int x1,int y1,D3DCOLOR MyColor) { MyColor = D3DCOLOR_ARGB(250,250,250,50); // Создаем шрифт D3DXCreateFont(pDirect3DDevice,30,10,FW_NORMAL,0,FALSE,1,0,0,DEFAULT_PITCH|FF_MODERN,L"Arial",&pFont); // Координаты прямоугольника Rec.left = x; Rec.top = y; Rec.right = x1; Rec.bottom = y1; // Вывод текста pFont->DrawText(NULL,L"Нерода Н.Н.", -1, &Rec, DT_WORDBREAK, MyColor); // удаляем pFont->Release(); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // LightMaterial() // Функция реализации света и материала // // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// VOID LightMaterial() { D3DMATERIAL9 Material; //материал D3DLIGHT9 Light; //свет //установим материал ZeroMemory(&Material,sizeof(D3DMATERIAL9)); Material.Diffuse.r = Material.Ambient.r = 1.0f; Material.Diffuse.g = Material.Ambient.g = 1.0f; Material.Diffuse.b = Material.Ambient.b = 0.0f; Material.Diffuse.a = Material.Ambient.a = 1.0f; pDirect3DDevice-> SetMaterial(&Material); D3DXVECTOR3 VectorDir; //установим свет ZeroMemory(&Light,sizeof(D3DLIGHT9)); Light.Type = D3DLIGHT_DIRECTIONAL; Light.Diffuse.r = 1.0f; Light.Diffuse.g = 1.0f; Light.Diffuse.b = 1.0f; Light.Range = 1000.f; //установим нормаль VectorDir = D3DXVECTOR3(0.0f,0.0f,1.0f), D3DXVec3Normalize((D3DXVECTOR3*)&Light.Direction,&VectorDir); pDirect3DDevice -> SetLight(0,&Light); pDirect3DDevice -> LightEnable(0,TRUE); pDirect3DDevice -> SetRenderState(D3DRS_LIGHTING,TRUE); pDirect3DDevice -> SetRenderState(D3DRS_AMBIENT,0); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void FreeD3D()//функция освобождает захваченные ресурсы { if( pTextura001 != NULL ) pTextura001->Release(); if( pBufferIndex != NULL) pBufferIndex->Release(); if( pBufferVershin != NULL) pBufferVershin->Release(); if( pDirect3DDevice != NULL) pDirect3DDevice->Release(); if( g_pD3D != NULL) g_pD3D->Release(); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) //здесь происходит обработка сообщений { switch(msg) { { case WM_DESTROY: FreeD3D(); //функция освобождния захваченых ресурсов PostQuitMessage(0); break; } case WM_KEYDOWN: { if(wparam == VK_ESCAPE) PostQuitMessage(0); return 0; } } return (DefWindowProc(hwnd, msg, wparam, lparam)); }
Добавлено (15.10.2012, 22:55) --------------------------------------------- народ,подскажите в чём проблемма
Я белый и пушистый но имею когти и зубы
Сообщение отредактировал redinard - Среда, 10 Октября 2012, 14:15
redinard Дата: Среда, 10 Октября 2012, 12:18 | Сообщение # 296 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
спасибо,не заметил просто,действительно за лето подзабыл,но ничего мне ещё лаб 12 написать надо,так что вспомню ))Добавлено (10.10.2012, 01:06) ---------------------------------------------
Quote
В первую очередь нужно вынести бОльшую часть кода из заголовочника (.h) в .cpp, в .h файле оставить только объявления ф-ций, глобальные переменные, классы (описание вершин, например), все остальное писать в .cpp.
можеш пожалуйста показать как поумнее будет это сделать,желательно в образе заготовки движкаДобавлено (10.10.2012, 12:18) --------------------------------------------- я хочу понять архитектуру движка,и начать его строить
Я белый и пушистый но имею когти и зубы
redinard Дата: Вторник, 09 Октября 2012, 18:05 | Сообщение # 297 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
язык то я подучу вместе с лабами,а ошибку то как исправить ?
Я белый и пушистый но имею когти и зубы
redinard Дата: Вторник, 09 Октября 2012, 17:57 | Сообщение # 298 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
на базвом,год обучался в универе,просто как было сказано ранее пока я просто копипастю,да и подзабыл слегка язык за лето )Добавлено (09.10.2012, 17:57) --------------------------------------------- нашол в нэте вот такое решение
Code
VOID DrawMyText(LPDIRECT3DDEVICE9 pDirect3DDevice,HFONT hFont, char* StrokaTexta,int x,int y,int x1,int y1,D3DCOLOR MyColor) { MyColor = D3DCOLOR_ARGB(250,250,250,50); // Создаем шрифт D3DXCreateFont(pDirect3DDevice,30,10,FW_NORMAL,0,FALSE,1,0,0,DEFAULT_PITCH|FF_MODERN,"Arial",&pFont); // Координаты прямоугольника Rec.left = x; Rec.top = y; Rec.right = x1; Rec.bottom = y1; // Вывод текста pFont->DrawText(NULL,StrokaTexta, -1, &Rec, DT_WORDBREAK, MyColor); // удаляем pFont->Release(); } VOID RenderingDirect3D() { if(pDirect3DDevice == NULL) // Проверяем ошибки return; pDirect3DDevice->Clear( 0, NULL, D3DCLEAR_TARGET| D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(60,100,150), 1.0f, 0 ); // Начало сцены pDirect3DDevice->BeginScene(); // Здесь происходит прорисовка сцены LightMaterial(); Matrix(); pDirect3DDevice->SetStreamSource( 0, pBufferVershin, 0, sizeof(CUSTOMVERTEX) ); pDirect3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); pDirect3DDevice->SetIndices(pBufferIndex); // Вывод объекта pDirect3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 36, 0, 12); // Вывод текста DrawMyText(pDirect3DDevice,hFont,"Лаб. раб. №3\nВращение куба\nДля выхода нажмите клавишу <Esc> ",10,10,500,700,D3DCOLOR_ARGB(250,250,250,50)); // Конец сцены pDirect3DDevice->EndScene(); // Представляем на экран pDirect3DDevice->Present( NULL, NULL, NULL, NULL ); }
только осталась одна ошибка Quote
error C2660: DrawMyText: функция не принимает 8 аргументов
Я белый и пушистый но имею когти и зубы
redinard Дата: Вторник, 09 Октября 2012, 16:59 | Сообщение # 299 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
вот код:
#pragma comment(lib, "winmm.lib") #pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.lib") #include <windows.h> #include "d3d9.h" #include <d3dx9.h> #include <d3dx9core.h> #include <mmsystem.h>//заголовочный файл для работы с системными функциями //*********************************************************** LPDIRECT3D9 g_pD3D = NULL; //объявление главного объекта LPDIRECT3DDEVICE9 pDirect3DDevice = NULL; //объявление девайса LPDIRECT3DVERTEXBUFFER9 pVertBuff = NULL; //объявление вертекс буффера LPDIRECT3DINDEXBUFFER9 pBufferIndex = NULL; // Индексный буфер LPD3DXFONT pFont = NULL; RECT Rec; HFONT hFont; void DrawMyText(); void LightMaterial(); void Matrix(); struct CUSTOMVERTEX//структура определяющая формат вершин { float x, y, z;//координаты вершины float nx,ny,nz; //нормали }; #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL)//формат содержания вершин /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // ИНИЦИАЛИЗАЦИЯ Direct3D // // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// HRESULT InitD3D(HWND hwnd) { if(NULL == (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION))) //создаётся основной указатель на интерфейс IDirect3D9 return E_FAIL; D3DDISPLAYMODE Disp; //структура для соответствия текущих установок дисплея if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Disp))) //получаем текущий формат дисплея return E_FAIL; //параметры показа D3DPRESENT_PARAMETERS d3dpp; //обект параметров представления Direct3DParametr ZeroMemory(&d3dpp, sizeof(d3dpp)); //очищает создаваемую структуру от мусора d3dpp.Windowed = false; //видеорежим используемый нашим приложением d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //параметр опредиления размеров буфера d3dpp.BackBufferFormat = Disp.Format; //формат поверхности заднего буфера d3dpp.EnableAutoDepthStencil = true;//значение показывающее возможность создания Z буфера d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//формат поверхности Z буфера d3dpp.BackBufferWidth = GetSystemMetrics(SM_CXSCREEN);//берём размер разрешения экрана и передаём параметрам d3dpp.BackBufferHeight = GetSystemMetrics(SM_CYSCREEN);// d3dpp.BackBufferCount = 3;// кол-во заданных буферов d3dpp.FullScreen_RefreshRateInHz = Disp.RefreshRate;//частта обновления экрана //создание девайса if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &pDirect3DDevice)))//обект интерфейса устройства return E_FAIL; pDirect3DDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW);//отключить отсечение pDirect3DDevice->SetRenderState(D3DRS_LIGHTING,FALSE);//отключить освещение Direct3D pDirect3DDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);//включаем Z буфер return S_OK; } /////////////////////////////////////////////////////////////////////////////////////////////////// void RenderD3D() { if(pDirect3DDevice==NULL) return; pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(60,100,150), 1.0f, 0); //цвет фона pDirect3DDevice->BeginScene(); //начало сцены //здесь происходит отрисовка сцены Matrix(); LightMaterial(); //здесь происходит отрисовка сцены pDirect3DDevice->SetStreamSource(0, pVertBuff, 0, sizeof(CUSTOMVERTEX)); //Установка формата вершин pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX); pDirect3DDevice->SetIndices(pBufferIndex); pDirect3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12); //вывод объекта //вывод текаста DrawMyText(pDirect3DDevice,hFont,L"основа DirectX ",10,10,500,700,D3DCOLOR_ARGB(250,250,250,50)); pDirect3DDevice->EndScene(); //конец сцены pDirect3DDevice->Present(NULL, NULL, NULL, NULL); //показать все } /////////////////////////////////////////////////////////////////////////////////////////////////////////////// HRESULT InitVertBuff() //internalObject { //проектируем вертексный буфер CUSTOMVERTEX Vertex[] = { { 1.0f,-1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //А { -1.0f, 1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //С { -1.0f,-1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //В { -1.0f, 1.0f, 1.0f, 0.0f,0.0f,-1.0f}, //C { 1.0f,-1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //A { 1.0f, 1.0f, 1.0f, 0.0f,0.0f,-1.0f }, //D { -1.0f,-1.0f, 1.0f, -1.0f,0.0f,0.0f }, //А2 { -1.0f, 1.0f,-1.0f, -1.0f,0.0f,0.0f }, //С2 { -1.0f,-1.0f,-1.0f, -1.0f,0.0f,0.0f }, //В2 { -1.0f, 1.0f,-1.0f, -1.0f,0.0f,0.0f }, //C2 { -1.0f,-1.0f, 1.0f, -1.0f,0.0f,0.0f }, //A2 { -1.0f, 1.0f, 1.0f, -1.0f,0.0f,0.0f }, //D2 { 1.0f,-1.0f,-1.0f, 0.0f,0.0f,1.0f }, //А3 { -1.0f,-1.0f,-1.0f, 0.0f,0.0f,1.0f }, //В3 { -1.0f, 1.0f,-1.0f, 0.0f,0.0f,1.0f}, //С3 { -1.0f, 1.0f,-1.0f, 0.0f,0.0f,1.0f }, //C3 { 1.0f, 1.0f,-1.0f, 0.0f,0.0f,1.0f }, //D3 { 1.0f,-1.0f,-1.0f, 0.0f,0.0f,1.0f }, //A3 { 1.0f,-1.0f,-1.0f, 1.0f,0.0f,0.0f }, //А4 { 1.0f, 1.0f, 1.0f, 1.0f,0.0f,0.0f }, //С4 { 1.0f,-1.0f, 1.0f, 1.0f,0.0f,0.0f }, //В4 { 1.0f, 1.0f, 1.0f, 1.0f,0.0f,0.0f}, //C4 { 1.0f,-1.0f,-1.0f, 1.0f,0.0f,0.0f }, //A4 { 1.0f, 1.0f,-1.0f, 1.0f,0.0f,0.0f}, //D4 { 1.0f, 1.0f, 1.0f, 0.0f,-1.0f,0.0f }, //А5 { -1.0f, 1.0f,-1.0f, 0.0f,-1.0f,0.0f }, //С5 { -1.0f, 1.0f, 1.0f, 0.0f,-1.0f,0.0f}, //В5 { -1.0f, 1.0f,-1.0f, 0.0f,-1.0f,0.0f }, //C5 { 1.0f, 1.0f, 1.0f, 0.0f,-1.0f,0.0f }, //A5 { 1.0f, 1.0f,-1.0f, 0.0f,-1.0f,0.0f}, //D5 { 1.0f,-1.0f, 1.0f, 0.0f,1.0f,0.0f }, //А6 { -1.0f,-1.0f, 1.0f, 0.0f,1.0f,0.0f}, //В6 { -1.0f,-1.0f,-1.0f, 0.0f,1.0f,0.0f}, //С6 { -1.0f,-1.0f,-1.0f, 0.0f,1.0f,0.0f }, //C6 { 1.0f,-1.0f,-1.0f, 0.0f,1.0f,0.0f }, //D6 { 1.0f,-1.0f, 1.0f, 0.0f,1.0f,0.0f }, //A6 }; const unsigned short Index[]={ 0,1,2, 2,3,0, 4,5,6, 6,7,4, 8,9,10, 10,11,8, 12,13,14, 14,15,12, 16,17,18, 18,19,16, 20,21,22, 22,23,20, }; // | - кол-во вершин прямо пропорционально числу перед sizeof if(FAILED(pDirect3DDevice->CreateVertexBuffer( 36*sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &pVertBuff, NULL))) return E_FAIL; void *pVB; //временный указатель на указатель вертекс буфера if(FAILED(pVertBuff->Lock(0, sizeof(Vertex), (void**)&pVB, 0))) //Блоктровка буфера return E_FAIL; memcpy(pVB, Vertex, sizeof(Vertex)); //копирование данных pVertBuff->Unlock(); //Разблокировка буфера return S_OK; } ///////////////////////////////////////////////// VOID Matrix() { D3DXMATRIX MatrixWorld,MatrixWorldX;//мировая матрица D3DXMATRIX MatrixWorldY,MatrixWorldZ; D3DXMATRIX MatrixView;//матрица вида D3DXMATRIX MatrixProjection;//матрица прекции //мировая матрица UINT Time = timeGetTime()% 5000; FLOAT Angle = Time*(2.0f * D3DX_PI)/5000.0f; D3DXMatrixRotationY(&MatrixWorldY,Angle); D3DXMatrixRotationX(&MatrixWorldX,Angle); D3DXMatrixMultiply(&MatrixWorld,&MatrixWorldX,&MatrixWorldY); pDirect3DDevice->SetTransform(D3DTS_WORLD,&MatrixWorld); //матрица вида D3DXMatrixLookAtLH(&MatrixView,&D3DXVECTOR3(0.0f,0.0f,-8.f), &D3DXVECTOR3(0.0f,0.0f,0.0f), &D3DXVECTOR3(0.0f,1.0f,0.0f)); pDirect3DDevice->SetTransform( D3DTS_VIEW, &MatrixView ); D3DXMatrixPerspectiveFovLH(&MatrixProjection, D3DX_PI/4,1.0f,1.0f,100.0f); //матрица проекции pDirect3DDevice->SetTransform(D3DTS_PROJECTION,&MatrixProjection); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // функция DrawMyText() // вывод текста на экран // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// VOID DrawMyText(LPDIRECT3DDEVICE9 pDirect3DDevice,HFONT hFont, char* StrokaTexta,int x,int y,int x1, int y1,D3DCOLOR MyColor) { //создаём шрифт hFont = CreateFont(30, 10, 0, 0,FW_NORMAL,FALSE,FALSE,0,1,0, 0, 0, DEFAULT_PITCH|FF_MODERN, L"Arial"); //координаты прямоугольника Rec.left = x; Rec.top = y; Rec.right = x1; Rec.bottom = y1; //инициализируем шрифт D3DXCreateFont(pDirect3DDevice, hFont, &pFont); //начало pFont -> Begin(); //вывод текста pFont -> DrawText(StrokaTexta, -1, &Rec, DT_WORDBREAK, MyColor); //конец pFont -> End(); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // LightMaterial() // Функция реализации света и материала // // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// VOID LightMaterial() { D3DMATERIAL9 Material; //материал D3DLIGHT9 Light; //свет //установим материал ZeroMemory(&Material,sizeof(D3DMATERIAL9)); Material.Diffuse.r = Material.Ambient.r = 1.0f; Material.Diffuse.g = Material.Ambient.g = 1.0f; Material.Diffuse.b = Material.Ambient.b = 0.0f; Material.Diffuse.a = Material.Ambient.a = 1.0f; pDirect3DDevice-> SetMaterial(&Material); D3DXVECTOR3 VectorDir; //установим свет ZeroMemory(&Light,sizeof(D3DLIGHT9)); Light.Type = D3DLIGHT_DIRECTIONAL; Light.Diffuse.r = 1.0f; Light.Diffuse.g = 1.0f; Light.Diffuse.b = 1.0f; Light.Range = 1000.f; //установим нормаль VectorDir = D3DXVECTOR3(0.0f,0.0f,1.0f), D3DXVec3Normalize((D3DXVECTOR3*)&Light.Direction,&VectorDir); pDirect3DDevice -> SetLight(0,&Light); pDirect3DDevice -> LightEnable(0,TRUE); pDirect3DDevice -> SetRenderState(D3DRS_LIGHTING,TRUE); pDirect3DDevice -> SetRenderState(D3DRS_AMBIENT,0); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void FreeD3D()//функция освобождает захваченные ресурсы { if(pVertBuff != NULL) pVertBuff->Release(); if(pDirect3DDevice != NULL) pDirect3DDevice->Release(); if(g_pD3D != NULL) g_pD3D->Release(); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) //здесь происходит обработка сообщений { switch(msg) { { case WM_DESTROY: FreeD3D(); //функция освобождния захваченых ресурсов PostQuitMessage(0); break; } case WM_KEYDOWN: { if(wparam == VK_ESCAPE) PostQuitMessage(0); return 0; } } return (DefWindowProc(hwnd, msg, wparam, lparam)); }
Я белый и пушистый но имею когти и зубы
redinard Дата: Вторник, 09 Октября 2012, 15:42 | Сообщение # 300 | Тема: помощь в разработке движка
постоянный участник
Сейчас нет на сайте
Quote
error C2660: DrawMyText: функция не принимает 8 аргументов
почему ?
Я белый и пушистый но имею когти и зубы