• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by kasibhat · Mar 09, 2015 at 02:08 PM · backbuffer

How do I retreive the colour value from the frame buffer?

Hi Guys

I am working on an app which has a world map covering the entire screen. I need to be able to detect which country has been clicked on. Each of the countries are colored differently on the world map. I am trying to detect which country has been clicked on by fetching the color value clicked on. I do not want to fetch the value from the texture of the world map because. 1. I will be using multiple textures to stitch together the world map. 2. The textures will all be compressed, because of which I would not be able to fetch the correct color value

I used the ReadPixels function to create a texture from the frame buffer dynamically. However, some problems with I noticed were:

  1. The frame buffer is not the size of the target resolution (I even tried Screen.SetResolution), instead it is the size of the 'using resolution' in the game view on re-sizing it, which is weird. I thought the frame buffer size would be fixed to what I set it and then the contents would be scaled to fit the screen.

  2. Fetching the color from the frame buffer does not work the way I expected it to. Hardcoding pixel values into GetPixel(knowing that the origin is at the top left corner), gives me the wrong value. Any pointers on what I am doing wrong? Here is a code snippet of what I am trying to do:

          float XScaleFactor = ((float)Screen.width / _WorldMapWidth);
         float YScaleFactor = ((float)Screen.height / _WorldMapHeight);
    
         tex.ReadPixels (new Rect(0 ,0 , Screen.width , Screen.height), 0,0);
         tex.Apply ();
         Color pixelColor = tex.GetPixel ((int)(point.x * XScaleFactor ), (int)(Screen.height - (point.y * YScaleFactor))) ;
    
    
    

Any pointers on where I may be going wrong?

Thanks Rahul

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Is there a way to read image from Camera on Flash? 0 Answers

Accessing camera "backbuffer" in surface shader 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges