blossom111
29-04-2013, 18:30
سلام
آموزش دایرکت ایکس رو با زبان C++سراغ ندارید؟
برای یادگیری دایرکت باید win32رو هم بلد بود؟
شما برنامه ای رو که دو خط به هم برخورد کنند و تبدیل به یک حرف مثل A بشوند را سراغ ندارید یا بلد نیستید یا کسی را سراغ ندارید که بلد باشد؟
هر کدومو میدونید ج بدید
سلام
البته ++VC که خیلی مرتبط به این بخش نیست و از این نظر در جای خیلی مناسبی سوال تان را مطرح نکرده اید.
برای سرنخ برنامه نویسی DirectX در ++VC میتوانید بسته زیر را دانلود و مثال هایش و مطالب مرتبط را در اینترنت پیگیری کنید:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در زبان های #C و VB.Net هم که مرتبط با این بخش است میتوانید از SharpDX استفاده کنید که لایه Managed بسیار نازکی روی DirectX است.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در مورد آن ترسیم دو خط هم اگر دستورات موتور گرافیکی دوبعدی +GDI برایتان کافی باشد به کدهای ساده ای مانند این خواهید رسید.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شب خوش.
blossom111
01-05-2013, 09:02
در تاپیک های دیگر سوالم را مطرح نمودم اما کسی پاسخ گو نمی باشد.
SDKرا نیز دانلود کرده بودم اما مثال هایش خیلی سخت است.
خیلی ممنون از راهنماییتان اما پس از رسم این 2خط چگونه باید آنها را به هم برخورد داد و تبدیل به حرف نمود؟؟؟
و در مورد win32:
آموزشی را دریافت نمودم در رابطه با آموزش دایرکت که درمحیط win32 بود
حال نمدانم لزومی وجود دارد که قبل از یادگیری دایرکت نیز حتما باید win32 را یاد بگیرم؟؟؟؟؟؟؟؟
جواب این سوال را تا هفته آینده باید تحویل استاد دهم درصورتیکه مطلب چندانی از دایرکت نمیدانم
اگر کسی را میشناسید که میتواند در این زمینه مرا یاری دهد لطفا معرفی نمایید
باتشکر وامتنان:n16:
سلام
اما پس از رسم این 2خط چگونه باید آنها را به هم برخورد داد و تبدیل به حرف نمود؟؟؟
دقیقا منظورتان چیست، این کد همین الآن شکلی مانند 8 فارسی رسم میکند، و هر دو خط در نقطه (100,50) به هم میرسند، یعنی این به معنی برخورد دو خط نیست؟!
حال نمدانم لزومی وجود دارد که قبل از یادگیری دایرکت نیز حتما باید win32 را یاد بگیرم؟
پروژه های Win32 در ++VC در واقع شامل چکیده ترین حداقل های برنامه نویسی در ویندوز و بدون کتابخانه های کمکی اضافه است.
به عنوان نمونه چگونگی کار کردن با API های خواندن حرکت ماوسس و فرامین کیبورد و خواندن فایلها به گمانم حدس میزنم در DirectX نباشد و احتمالاً شما را نیازمند بلد بودن کار تحت پروژه های Win32 و چگونگی اتصال به API های هسته ویندوز میکند.
ضمن اینکه بظاهر منطقی است که در هر کاری باید با پلتفرم پایه آشنا باشد.
من سالها قبل این SDK را دانلود و نگاهی کرده بودم، ولی چون در حیطه تخصص من نبود (C#, CLR, dotNet) وقتی رویش نگذاشتم، پیشنهاد میکنم نگاه دقیق تری به گدها بیاندازید، منبع خوبی است.
بحرحال مجدد باید تاکید کنم که سوال شما در حیطه اطلاعات من نیست و البته به بخش Net Framework هم مرتبط نیست.
موفق باشید.
blossom111
02-05-2013, 07:19
مرسی از بابت راهنماییتون
باید اول 2تا خط جدا باشند بعد حرکت کرده و آنگاه به هم برخورد نمایند و تبدیل به یک حرف شوند
باز هم سپاسگزارم
جای تعجب دارد که در زمینه تخصصتان نیست اما این گونه پاسخ میدهید
اگر در زمینه تخصصتان بود چگونه جواب میدادید
از این پس سعی میکنم سوالاتم را از شما بپرسم
روز معلم را نیز به شما تبریک میگویم
چرا که نقل از علی (ع)است که :هر کس یک کلمه به من بیاموزد مرا بنده خویش کرده است.
امیدوارم همیشه خوب و شاد باشید
باز هم منتظر هستم اگر راه حلی پیدا شد اطلاع دهید
سلام
باید اول 2تا خط جدا باشند بعد حرکت کرده و آنگاه به هم برخورد نمایند و تبدیل به یک حرف شوند
مطلب خاصی ندارد، فقط باید از یک تایمر استفاده کنید که خطوط را هربار با موقعیت متفاوتی ترسیم کنید تا به نقطه نهایی برسید.
حتی میتوانید آرایه ای مرنبط با انیمیشن این نقاط داشته باشید و هر درسررسید تایمر هربار مختصات عنصر بعدی را رسم کنید
و...
اگر در انجام آن در زبان #C یا VB.Net و در محیط Framework مشکلی داشتید، طبیعتاً قابل حل است...
blossom111
11-05-2013, 08:16
مشکل این برنامه چیه و چرا هیچی نشون نمیده؟
جواب بدید لطفا
#include <windows.h>
#include <windowsx.h>
#include <d3d9.h>
#define SCREEN_WIDTH 800
#define SCREEN_HEIGHT 800
#pragma comment (lib, "d3d9.lib")
LPDIRECT3D9 d3d;
LPDIRECT3DDEVICE9 d3ddev;
LPDIRECT3DVERTEXBUFFER9 v_buffer = NULL;
D3DPRIMITIVETYPE D3DPT_PointLIST;
void initD3D(HWND hWnd);
void render_frame(void);
void cleanD3D(void);
void init_graphics(void);
struct CUSTOMVERTEX {FLOAT X, Y, Z, RHW; DWORD COLOR;};
#define CUSTOMFVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)
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 wc;
ZeroMemory(&wc, sizeof(WNDCLASSEX));
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.lpszClassName = L"WindowClass";
RegisterClassEx(&wc);
hWnd = CreateWindowEx(NULL,
L"WindowClass",
L"Our Direct3D Program",
WS_OVERLAPPEDWINDOW,
0, 0,
SCREEN_WIDTH, SCREEN_HEIGHT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd, nCmdShow);
initD3D(hWnd);
MSG msg;
while(TRUE)
{
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(msg.message == WM_QUIT)
break;
render_frame();
}
cleanD3D();
return msg.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);
}
// this function initializes and prepares Direct3D for use
void initD3D(HWND hWnd)
{
d3d = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = hWnd;
d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
d3dpp.BackBufferWidth = SCREEN_WIDTH;
d3dpp.BackBufferHeight = SCREEN_HEIGHT;
d3d->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&d3ddev);
init_graphics();
}
void render_frame(void)
{
d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
d3ddev->BeginScene();
d3ddev->SetFVF(CUSTOMFVF);
d3ddev->SetStreamSource(0, v_buffer, 0, sizeof(CUSTOMVERTEX));
d3ddev->DrawPrimitive(D3DPT_PointLIST, 0, 1);
d3ddev->EndScene();
d3ddev->Present(NULL, NULL, NULL, NULL);
}
void cleanD3D(void)
{
v_buffer->Release();
d3ddev->Release();
d3d->Release();
}
void init_graphics(void)
{
// create the vertices using the CUSTOMVERTEX struct
CUSTOMVERTEX vertices[] =
{
{ 20.0f, 20.f, 10.f,.05f, D3DCOLOR_XRGB(0, 0, 255), },
{ 20.0f,20.0f, 0.5f, .05f, D3DCOLOR_XRGB(0, 255, 0), },
};
// create a vertex buffer interface called v_buffer
d3ddev->CreateVertexBuffer(2*sizeof(CUSTOMVERTEX),
0,
CUSTOMFVF,
D3DPOOL_MANAGED,
&v_buffer,
NULL);
VOID* pVoid; // a void pointer
// lock v_buffer and load the vertices into it
v_buffer->Lock(0, 0, (void**)&pVoid, 0);
memcpy(pVoid, vertices, sizeof(vertices));
v_buffer->Unlock();
}
سلام
در خصوص کد فوق (VC + DirectX) من نمیتوانم کمکتان کنم.
اگر بخواهم در محدوده اطلاعات اندک خودم کمکتان کنم، میتوانم پروژه ای را با زبان #C و برمبنای SharpDX و DirectX برایتان بگذارم.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بسته دانلود شامل سورسی کوتاه و exe اجرایی برنامه است.
برای اجرای برنامه در سیستم عامل های قدیمی تر Win8 باید از نصب بودن Framework4 ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) و DirectX9c ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) مطمئن شوید.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در ضمن در کد قسمتی مشخص شده که اگر عدد صفر گذاشته شود حرکت رفت و برگشتی تکرار نخواهد شد.
لینک دانلود موقت:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
درنهایت لازم به ذکر است که برای نمایش صحیح و چپ به راست کدهای برنامه نویسی در محیط تالارگفتگو میتوانید در زمان درج مطالب از دکمه (#) در نوار ابزار استفاده کنید.
موفق باشید.
blossom111
17-05-2013, 15:27
خیلی سلام
مشکل برنامه ام حل شد اما نمی دانم چگونه هم زمان چند خط رسم نمایم
زمانیکه چند خط را تعریف میکنم تنها خط اولی رسم میشود
کسی یا سایتی را نمیشناسید که در این زمینه کمکم کند؟
متشکرم
سلام مجدد
اما نمی دانم چگونه هم زمان چند خط رسم نمایم
احتمالاً باید با تکرار خطوط زیر در متد render_frame مشکلتان حل شود!
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کسی یا سایتی را نمیشناسید که در این زمینه کمکم کند؟
بحرحال اگر در تالار C همین سایت امتحانی کنند ضرری ندارد و با مباحث شما مرتبط تر است:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
موفق باشید.
blossom111
22-05-2013, 08:20
سلام
2تا خطم رو رسم کردم حالا موقعی که میخوام تکونش بدم ارور میده
تنظیم کردم که ابتدا 50 درجه نسبت به x و سپس y , z بچرخدو سپس 4واحد به سمت راست و... حرکت کند
اما ارور میدهد 7تا:n03:
اینم 2تاش هست
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با تشکر
سلام
شما از نام های فارسی و فاصله دار برای کلاس ها و ساختارهایتان استفاده کردید؟!!!
پیشنهاد میکنم اینکاررا در هیچ زبانی انجام ندهید، مخصوصاً ++C
درنهایت هم خطاهای لینکر معمولاً مربوط به نحوه اشتباه include ها و فراخوانی ها میشود.
کمک بیشتری نمیتوانم بکنم.
موفق باشید.
blossom111
22-05-2013, 21:02
سلام
ممنونم
قبلا که اشکالی نداشت واسه رسم خط و... حالا چطور شده که ارور میده؟
خیلی خیلی ممنون از راهنماییتون
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.