lord_akinak متخصص ساخت بازی
تاريخ عضويت: شنبه 15 ارديبهشت 1386 تعداد ارسالها: 349 محل سكونت: Hell
جمعه 11 بهمن 1387 - 02:44 |
|
|
سلام
جواب:
امکانش نیست!!
دورانها ( و بطور کلی تبدیلات ماترسی ) در Dx ( و همین طور OpenGL ) بعد از مرحله VertexAssembler ( و اگر از Programmable Pipline استفاده بشه ، قبل از VertexShader ) اعمال میشن و وقتی تبدیل انجام شد به اطلاعات دسترسی ندارید.
به طور کلی ، مختصات یه راس برای رسم به این شکل تایین میشه :
1 - مکان راس نسبت که مختصات داخلی ( Local ) / این همان مختصات vertex هاست که وقتی vertexbuffer رو lock کنید میتونید بخونیدشون یا بنویسید!
2 - World
3 - View
4 - Projection
مراحل 2 تا 4 روی مخصات local رئوس تاثیر نمیزارن.
برای تغییر مختصات local:
1 - از طریق برنامه ای که mesh رو ساخته عمل کنید و مثلا 20 درجه دوان توی 3dsmax بدید و از برنامه buffer رو lock کنید
2 - بافر رو با read و write قفل کنید ، هر راس رو دستی ( sin و cos ) دوران بدید و بعد اطلاعات رو write کنید.
امکان خواندن مختصات vertex که تبدیل روش انجام شده نیست ، مگر اینکه از Transform Vertex استفاده کنید، که در این صورت اصلا تبدیلات World View Projection روشون اعمال نمیشه و همون مختصات local برای Primitive Assembler ( قبل از Rasterizer وPixelShader ) ارسال میشه ...
در کل خوندن اطلاعات vertex کار جالبی نیست ( lock کردن بافر پرهزینه هست، مخصوصا اگه بخوای read کنی دیگه خیلی تاثیر میزاره ... ) |
_________________ And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now |
|