জিএলএসএল: আমি কীভাবে কোনও ইনটকে একটি ফ্লোট নিক্ষেপ করব?


40

একটি GLSL টুকরা shader আমি একটি নিক্ষেপ করার চেষ্টা করছি floatএকটি মধ্যে int। সংকলক একটি ত্রুটি উত্থাপন করে:

ERROR: 0:60: '=' :  cannot convert from 'mediump float' to 'highp int'

আমি যথার্থতা বাড়াতে চেষ্টা করেছি int:

mediump float indexf = floor(2.0 * mixer);
highp int index = indexf;

কিন্তু কোন উপকার.

আমি কিভাবে intসঠিকভাবে কাস্ট করব ?


1
ভবিষ্যতের রেফারেন্সের জন্য, আপনি স্ট্যাক ওভারফ্লোতে এই জাতীয় সাধারণ প্রোগ্রামিংয়ের প্রশ্ন জিজ্ঞাসা করলে আপনি আরও ভাল উত্তর পাবেন। stackoverflow.com - সম্প্রদায়ের প্রতিক্রিয়ার উপর নির্ভর করে এই প্রশ্নটি যেভাবেই হোক সেখানে স্থানান্তরিত হতে পারে।
— রিকিট

পুনরায় ব্যাখ্যা কাস্টগুলির জন্য, এখন যেমন ফাংশন রয়েছে floatBitsToInt।
— jozxyqk

উত্তর:


41

এটা চেষ্টা কর:

highp int index = int(indexf);

আমি এটি এখানে খুঁজে পেয়েছি ।


এছাড়াও মনে রাখবেন যে কোনও int এ একটি ফ্লোট কাস্ট করা স্বয়ংক্রিয়ভাবে এটি মেঝে করে তোলে (কমপক্ষে যে কোনও বাস্তবায়নে আমি কখনও দেখেছি) যাতে আপনার মেঝেতে কল করা অপ্রয়োজনীয় হওয়া উচিত।
— রিকিট

6
বেশিরভাগ ভাষায় রাউন্ডিং মোডটি কাটা / গোল-শূন্য থেকে শূন্য হয়, যা ইতিবাচক সংখ্যার জন্য মেঝের সমতুল্য তবে নেতিবাচক সংখ্যার জন্য নয়। এটি জিএলএসএল-এর জন্য প্রযোজ্য কিনা আমি মনে করি না, তবে তা না হলে আমি অবাক হব।

@ জো এটি একটি আকর্ষণীয় সত্য যা আমি কখনই ভাবিনি এবং আমি জাভা পরীক্ষার কেস দিয়ে এটি নিশ্চিত করেছি confirmed
— রিকিট

4
এখানে হাইপ কি গুরুত্বপূর্ণ? (একটি পূর্ণসংখ্যার উপর)
— লিয়ন পেলেটিয়ার

ধন্যবাদ, এটি আমার ক্ষেত্রেও কাজ করেছিল। পৃষ্ঠার অস্তিত্ব নেই বলে আপনি যে রেফারেন্সটি রেখেছিলেন তা আপডেট করতে পারবেন?
— বোরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.