PDA

View Full Version : مساله سرعت: scan line و اشاره گرها در برابر پیکسل



tami_1369
دوشنبه 27 تیر 1384, 16:51 عصر
سلام.آقا استفاده از اشارهگرها سرعت تحلیل رو بالا میبره؟؟؟؟
چون من تو یه برنامه دیدم که بجای استفاده از Pixel عکس،از ScanLine استفاده کرده که خروجی این تابع یه Pointer است.
این کار چه مزیتی داره؟؟؟؟

Sepidar
دوشنبه 27 تیر 1384, 17:23 عصر
ویرایش عنوان توسط بنده: عنوان تاپیک را دقیقتر انتخاب کنید

brians2000
سه شنبه 28 تیر 1384, 00:50 صبح
سلام.

دیوایس ایندیپندنت بیتمت ها یا دیپها روشی هستند که برای اونکه یک حافظه بیت مپ رو به طور مستقیم کنترل کنیم مورد استفاده قرار می گیرند و دارای تفاوت عمده با نوع عادی بیت مپ ها می باشند که مهمترین اونها این هستش که یک بیت مپ می تونه در چند جای حافظه باشه و به اصطلاح تقسیم شده باشه ولی دیب ها در حقیقت حافظه ای هستند که کاربر اونرو اختصاص داده تا اطلاعات گرافیکی رو توش ذخیره کنه پس دسترسی اونها مستقیم و خطی و استریم هستش! این روشی بخصوص در گیمهای قدیم عهد بوق ویندوز که از وینگز برای نوشتن مستقیم تو حفاظه تصویری استفاده می کردند زیاد استفاده می شد ... در هر وضع این روش برای پردازش تصویری کاربرد زیادی داره به این معنی که خروجی مونیکارتون (ورودی دابی استریم هرنوع که می خواهد باشد مثل وب کم یا ورودی ها ویدیویی دیگر که خروجی آر جی بی دارند و فیلتر گرابر بتونه اونهارو بیگره برای اطلاعات بیشتر دایرکت شو رو بخوانید) رو مستقیم می تونید توی حافظه بریزید و اونرو تفسیر کنید! :)) خوبیش اینه که با حافظه تون می تونید مثل یک اری تعریف کنید و اگر خیلی گیر اسمبلی بودید روی اون مستقیم کار کنید (کاری که اصلا توصیه نمی کنم : دلیل: نیازی نیست! ) و................:)) حالا ببینیم این بیت مپ چجوری تو حافظه قرار میگیره! کلا نوع دوم یعنی دیب ها اصلتا مال او اس 2 هستند و از عهد هیتلر اطلاعات به این صورت ذخیره می شده و همونطور که گفتم برای ذخیره تصاویر برای پردازش ایده آل هستند چون که در نوع استاندارد بیت مپ ها توسط ویندوز مدیریت می شوند و ممکنه به حافظه مربوطه دسترسی پیدا نکنید! حالا ببینیم این جناب بیت مپ کارش چیه؟ بیت مپ روش استاندارد برای ذخیره اطلاعات گرافیکی در ویندوز است که چون فشرده نشده دسترسی به اون خطی و سریعه! ولی این فایل برعکس ذخیره می شه یعنی چی؟ یعنی تو حافظه برعکس قرار می گیره و بالای تصویر در حافظه در حقیقت پایین اونه :)) توی دلفی برای کار راحت کردن اومدن اسکن لاین رو گذاشتن که محاسبات کشکی مربوطه رو خودش انجام می ده و اگر مثلا شما ایگرگ 50 رو بخواهید (سر پوینتر رو) بهتون پس می ده! ولی بازهم تاکید می کنم این کار مال دیب هاست و توی ایکس پی تو قیقاژ می ره!

یه سوال دیگه براتون ممکنه پیش بیاد: آیا میشه تو حافظه گرافیکی مستقیم نوشت! البته که میشه اونم حافظه است!!!! ولی خیلی کنده : در حقیقت اگر این کار رو می خواهید بکنید می تونید هم از دایرکت ایکس هم از وینگز استفاده کنید و حافظه رو برای خوندن یا نوشتن قفل کرده (که کارت گرافیک هم همزمان گیر نده و بخونه اونرو) بعد روش بنویسید ولی خیلی کنده! کلا چون دسترسی اون مستقیم نیست و از طریق باس ای جی پی هست بارها کندتر از حافظه اصلی است (بی نهایت کندتر! ) دایرکت ایکس برای کار راحت کردن تمام کارهارو خودش انجام می ده و خیال شما رو راحت می کنه! و طریقه ذخیره اطلاعات اونهم باز به صورت دیب است که کار سریع باشه! (در نوع عادی ویندوزی میتونه یه تفسیر تقسیم بشه پس دسترسی خطی غیر ممکنه) خوب... بسته به عمق بیتی 16 بیتی 24 بیتی یا 32 بیتی (یه آلفا هم اضافه شده که منظور شفافیت است ) و یا 8 بیتی و 1 بیتی که باید پردازش بیتی بشه تا تصویر در بیاد یعنی سیاه سفیده !! شما می تونید هم اندازه مربوطه رو بدست بیارید و... :)) اگر خواستی توضیح می دهم...

brians2000
سه شنبه 28 تیر 1384, 00:51 صبح
دوستانی که برنامه نویسی گیم رو بخصوص با دی ایکس سون به بعد کار کردند (انژین نه متن بازی) می دونند چقدر سر و کله زدن با اینا دردسر داره! البته باید بگم اولین باره که یه کتابخونه درست حسابی رو مایکروسافت عرضه کرده (در زمان خودش ! اون زمان سال 95 نه یک کتابخونه درست حسابی نه یک زبان برنامه نویس درست حسابی از مایکروسافت در اومده بود در حقیقت سال 2000 برای اولین بار مایکروسافت به فکر افتاد محیط توسعه درست و حسابی طراحی کنه (بیسیک و وی سی ++ رو بی خیال! وی استودیو خیلی قویه !!! تکست ادیتور پیشرفته! ) و این آقای دایرکت ایکس هم که کار راحت کنه در حقیقت محصول یه شرکت انگلیسیه که مایکروسافت با اون عملا اپن جی ال رو به حاشیه روند! البته شرکتهایی مثل آِی دی سافتور که درود خداوند بر آنان باد چنان این این اپن جی ال سیلیکون گرافیکس رو چاق و تپل کردند که هنوزم دایرکت ایکس رو حریفه! با این حال به نظر من کیفیت رندر دی ایکس یه چی دیگه است! راستی : برای کارهای گرافیکی مدرن!!! حتما از جی دی آی پلاس استفاده کن چون بسیار بهتر از گرافیک عهد بوق و افتضاح و غیر قابل استفاده !!!! استاندارد ویندوز است چون آلفا و گرادیانت و فورمت های متنوع رو داره و عملکردش هم بسیار عالی است !!! البته توی دات نت برای پیاده سازی محیط بصورت پیش فرض از اون استفاده شده.

seyedof
سه شنبه 28 تیر 1384, 09:49 صبح
سلام
در ویندوز فقط دو نوع بیت مپ داریم. DIB و DDB که نوع اول پردازشش سریعتره ولی نمایشش کندتر و نوع دوم پردازشش کندتره ولی نمایشش سریعتر. حالا بسته به کاربردتون هر کدوم رو میتونید انتخاب کنید.
ضمنا دایرکت ایکس از DIB استفاده نمیکنه. اصلا توی دایرکت ایکس سیستم و فرمت ذخیره سازی Texture ها به نحو دیگه ای است.

ممنون علی

brians2000
چهارشنبه 29 تیر 1384, 14:00 عصر
من هم دقیقا همینو گفتم ... به طور کلی مسالهtexture ها فرق داره و فکر نمی کنم با ذخیره سازی تصاویر دوبعدی کاری داشته باشه... مثلا به صورت پیش فرض تا اونجا که من یامه textureها باید حتما سایزشون به توان 2 باشه و تا اونجا که بنده یادمه دو بحث جدا هستند... در هر وضعیت : دیب سیستمی است که برای اولین بار توی او اس 2 خدا بیامرز استفاده شد و بسیاری اون رو او اس 2 بیت مپ می گویند و بخاطر اینکه می تونه در حافظه مورد دسترسی مستقیم قرار بگیره برای کسانی که می خواهند اینکارو انجام بدهند به مراتب بهتره... سال 1994 مایکروسافت یه کتابخونه به اسم وینگز رو به ویندوز اضافه کرد که در حقیقت اجازه دسترسی مستقیم به حافظه نمایشی رو می داد... توی ویندوز 95 هم به صورت مستقیم دایرکت ایکس رو عرضه که اجازه دسترسی مستقیم به حافظه گرافیکی رو می داد: زمانی که چیزی به عنوان سارفیس ایجاد میشه در حافظه گرافیکی قرار می گیره پس دسترسی اون از طریق گرافیک کار سریعتره البته می تونه هم در حافظه اصلی هم در گرافیکی باشه :

در هر وضع: در دایرکت ایکس هم بسیاری از فرامین در زمان کار عملی مشکل دارند مثلا : بی ال تی فست در خیلی از کارتهای گرافیکی مشکل داشت (نمی دونم الان چی؟ ) و ...

دسترسی از کارت گرافیکی به حافظه اصلی کندتر است
دسترسی از سی پی یو به حافظه گرافیکی کندتر است.
.... :) و بار دیگر هم می گویم texture ها به طور کلی بحثشون جداست و سارفیس ها هم همینطور اینها بحث جدایی دارند در اونجا به دلیل سرعت همه چیز به صورت استریم و خطی قرار میگیره که یکجا قابل دسترسی باشه : در جی دی آی پلاس هم همینطور... ولی کماکان هردو به صورت کامل فرمت قدیمی را پشتیبانی می کنند و در بسیاری موارد با اون کار می کنند ولی سارفیس ها اصلا بحث جدایی است و من در اون ذخیره سازی بیت مپی فقط نمی بینم پون هدفش نمایش سریعه پس قطعا یکپارچه و معمولا بسته به میزان حافظه گرافیکی اونجا ذخیره میشه و... :)

tami_1369
جمعه 21 مرداد 1384, 06:25 صبح
دوست خوب من از تو بسیار متشکرم که اینقدر اطلاعات به من دادی ...
دوست عزیز و گرامی بخاطر بکار بردن از کلمات مشکل وشما من از آخر نفمیدم که استفاده از Pixel بهتره یا ScanLine ؟؟؟؟