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


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.