Это скорее матовая природа, но в любом случае. Мне нужно определить, где я нажимаю изображение, отображаемое в квадрате в OpenGl. Квадрат 5000x5000 в размере и отображается в 0,0. Теперь из того, что я видел, это отображается из середины окна. Это отображает квадрат в нижнем левом углу оси. Чтобы противостоять этому, вместо того, чтобы изменять вершину квадрата, и поскольку мне нужно кастрюлю, я преобразую, прежде чем я нарисую квадроцикл.Координаты экрана до 2D-мира
Так, чтобы квадрат с центром при запуске, я панорамирую GL.Translate (-2500, -2500), 0).
Теперь координаты мыши относительно верхнего левого угла окна, поэтому я разбиваю их на части, например. Mouse.X/Width Mouse.Y/Высота
Это то место, где оно получает. Я знаю, что мне нужно умножить на 5000, но мне также нужно включить каст как-то.
Я не уверен, если это важно, но это, как моя матрица Орто установка:
GL.Ortho(-G_.MapSize * 1.5^ZoomFactor, G_.MapSize * 1.5^ZoomFactor, G_.MapSize * 1.5^ZoomFactor, -G_.MapSize * 1.5^ZoomFactor, -1, 1)
Это, очевидно, правильный ответ, но путь выхода моей лиги, как таковой я пометив его как ответ и надеюсь, что это поможет кому-то остальное. Я просто собираюсь найти другой способ сделать то, что хочу, потому что я абсолютно новичок в OpenGL. –
@ TheEmpireStrikesBack: на самом деле этот ответ меньше о GL, чем о математике. Я обновил свой ответ, чтобы охватить более практические аспекты. – derhass
К сожалению, я использую OpenTK, поэтому я не делаю unProject, но я искал его и нашел для него функцию, тогда я нашел это http://gamedev.stackexchange.com/questions/51820/c-opentk-converting-screen- coords-to-world-coords. Какая функция и как использовать, я собираюсь добавить ответ с моим кодом о том, как это работает. Сейчас он работает очень хорошо, вполне доволен этим. –