এসডিএল একসাথে একাধিক পৃষ্ঠকে ব্লিটিং করছে


10

আমি একটি প্ল্যাটফর্মিং গেমটি লেখার চেষ্টা করছি যেখানে স্তর ব্যাকগ্রাউন্ডের স্প্রাইটগুলি 512x512 খণ্ডে বিভক্ত করা হয়েছে। আমি একসাথে 3 টি অংশ স্মৃতিতে রাখি এবং আমি তিনটি স্ক্রিনে ব্লিট করার জন্য কোড লেখার চেষ্টা করছি। আমার কাছে বর্তমান কোডটি এখানে:

SDL_Rect where;
where.y = -game->camera->y;

where.x = -game->camera->x - MAP_WIDTH;
SDL_BlitSurface(left_chunk, NULL, screen, &where);

where.x = -game->camera->x;
SDL_BlitSurface(center_chunk, NULL, screen, &where);

where.x = -game->camera->x + MAP_WIDTH;
SDL_BlitSurface(right_chunk, NULL, screen, &where);

আমি যে ইস্যুটির মধ্যে যাচ্ছি তা হ'ল যেই অংশটি প্রথমে ব্লিটেড হয় কেবল এটিই প্রদর্শিত হয়। বাকিরা অনস্ক্রিনে উপস্থিত হতে ব্যর্থ। আমি মনে করি আলফা স্বচ্ছতার সাথে ইস্যুটির কিছু সম্পর্ক থাকতে পারে, তবে খণ্ডগুলি একেবারে ওভারল্যাপ না করলেও তারা ঝাপসা করতে ব্যর্থ হয়। কোডের অন্যান্য অংশগুলিতে আমি এক সাথে পর্দায় একাধিক জিনিস ব্লিটি করছি, যেমন অক্ষর এবং ব্যাকগ্রাউন্ড এবং সেগুলি সমস্ত সঠিকভাবে প্রদর্শিত হয়। কোডের এই নির্দিষ্ট বিভাগটিই কেবলমাত্র এই ক্ষেত্রের সাথে আমি এই সমস্যার মুখোমুখি।

স্ক্রিনশট

আমি যদি লাইনটি মন্তব্য করি যা বাম_পাখিকে blits করে, এটি এতে পরিবর্তন হয়:

স্ক্রিনশট পরে


আপনি কি নিশ্চিত যে আপনার গণনা করা এক্সটি স্ক্রিনের দৃশ্যমান অঞ্চলে চিত্রটি অবস্থান করে?
জ্যাক দ্য হিউম্যান

@ জ্যাক দ্য হিউম্যান এগুলি আংশিক অফস্ক্রিন, যেহেতু পর্দাটি কেবল 300x175 এবং মানচিত্রের খণ্ডগুলি 512x512 are আমি ভেবেছিলাম প্রথমে সমস্যাটি হতে পারে তবে তারা অনস্ক্রীন কিনা তা সঠিকভাবে উপস্থাপন করছে কিনা তা অপ্রাসঙ্গিক বলে মনে হচ্ছে না। আমি সমস্যার চিত্রিত করতে স্ক্রিনশট আপলোড করতে পারি upload
এক্সট্রোপিক ইঞ্জিন

1
এসডিএল ডকুমেন্টেশন বলছে যে এসডিএল_ব্লিটসর্ফেস ব্লিট করার পরে চূড়ান্ত আয়তক্ষেত্রটি ডাস্ট্রেক্ট করার জন্য সংরক্ষণ করে । আপনি পুনরায় সেট করা হচ্ছে চেষ্টা যেখানে প্রতিটি blit পর পরিবর্তনশীল?
Asakeron

@ আসিকারন! আমি কোথায় পরিবর্তন করতে হবে তা আশা করিনি । আপনি আপনার মন্তব্য একটি উত্তর করা উচিত!
এক্সট্রোপিক ইঞ্জিন

উত্তর:


8

এসডিএল ডকুমেন্টেশন বলছে যে এসডিএল_ব্লিটসর্ফেস ব্লিট করার পরে চূড়ান্ত আয়তক্ষেত্রটি ডাস্ট্রেক্ট করার জন্য সংরক্ষণ করে । ভেরিয়েবলটি সমস্যার সমাধান করে সেখানে পুনরায় স্থাপন করা ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.