opengl von scale in breite und höhe konvertieren

httpdigest

Top Contributor
Die Art, wie du die Frage gestellt hast, lässt noch etwas auf Unkenntnis des Koordinatensystems von OpenGL und der Transformationen schließen. Bitte habe einen Blick auf:
- https://learnopengl.com/Getting-started/Coordinate-Systems
- http://www.songho.ca/opengl/gl_projectionmatrix.html#ortho
- http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/

Dann wird alles klarer. Die konkrete Antwort auf deine Frage setzt jetzt voraus, dass du genauer beschreibst, was du mit "Bereich" meinst. Wenn du einen Pixelbereich (also Koordinaten ausgedrückt in Pixeln) im Viewport meinst, dann ist die Lösung ja ein einfacher "point in rectangle" Test.
Wenn du mit dem "Bereich" einen Bereich ausgedrückt in einem anderen Koordinatensystem meinst, dann musst du dieses Koordinatensystem einfach durch eine affine Transformation in das Pixelkoordinatensystem (window coordinate system) transformieren. Hier kommt es dann wieder darauf an, von welchem Koordinatensystem du genau redest.
 

coolian

Bekanntes Mitglied
mit scale ist die scale die für transformations matrixe nötig ist gemeint und im grunde ist es point in rectangle allerdings hab ich keine breite und höhe sondern eben nur scale fällt mir tatsächlich jetzt auch auf wie dumm ich meine frage gestellt hab schiebs aber auf 4 uhr morgens denn da hab ich die frage erstellt
 

httpdigest

Top Contributor
OpenGL selbst verwendet nur den Clip Space, in dem die Koordinaten (x/w, y/w, z/w) innerhalb des Würfels [-1, -1, -1]..[+1, +1, +1] liegen. Wenn du also keine perspektivische Projektion verwendest, dann brauchst du lediglich mit einem Intervallmapping das Intervall [-1, -1]..[+1, +1] auf das deines Viewports [0, 0]..[width, height] zu mappen und dann deine Clip Space Koordinaten (die in diesem Fall auch gleichzeitig "Normalized Device Coordinates" (NDC) sind) zu transformieren.
Wenn du jetzt zusätzlich noch weitere Transformationen vor den Clip Space einbaust, die dann dein eigenes Koordinatensystem in den Clip Space transformieren, dann transformiere deine Vertices/Positionen zusätzlich zuerst mit dieser Transformationsmatrix.
 

httpdigest

Top Contributor
Nenne doch mal bitte, was du ganz genau gegeben hast und was dein Ziel ist.
Also z.B.:
Gegeben folgende Transformationsmatrix (4x4 Matrix hier nennen), und folgender Viewport (x, y, w, h des Viewports nennen)
Gesucht: Window Space Koordinaten eines Punktes, wenn es durch OpenGL mit dieser Matrix transformiert wird
Darauf aufbauend kannst du dann z.B. vier Punkte transformieren und daraus das bounding rectangle im Window Space bilden und da dann dein Point in Rectangle test machen.
 

coolian

Bekanntes Mitglied
gegebn sind position scale textur font und text scale und position wird später benutzt um eine transformations matrix zu erstellen zu der ich aber kein zugriff habe wo ich den bräuchte scale uns position sind Vector2f textur ist texture id font ist eine font klasse und text ist ein string und um zu testen ob die maus in dem bereich welche von scale größer b.z kleiner gemacht wird und halt eine position hat ein rechteck halt aber hab halt keine width height nur scale
 

httpdigest

Top Contributor
Okay, also du verwendest eine bisher nicht näher genannte Library, um Text zu rendern. LWJGL 2 (wie in deinem ersten Post genannt) alleine kann keinen Text rendern. Und diese unbekannte Library verwendet ein bisher unbekanntes bzw. nicht näher genanntes Koordinatensystem, um an einer "Position" mit einer in einem unbekannten Koordinatensystem ausgedrückten Größe einen Text mit unbekannter Weite und unbekanntem Umbruch zu rendern. Und jetzt bietet diese Library einen Skalierungsfaktor an, der den Text auf unbekannte Weise größer macht bzw. skaliert. De fakh?!
Kurz: Du hast eigentlich überhaupt keine sinnvollen Informationen geliefert, um dir hier zu helfen.
 

coolian

Bekanntes Mitglied
es geht nicht um den text der sollte funktonieren und ist relitv unötig das ich den gennannt hab aber der konstruktor von meiner button klasse nimmt halt einen string sondern um diese klassen:
Java:
package guiElements;

import org.lwjgl.util.vector.Vector2f;

import fontMeshCreator.FontType;
import guis.GuiTexture;

public class Button extends GuiTexture{
    
    private FontType font;
    private String text;
    
    private Vector2f position;
    private Vector2f scale;
    
    public Button(int texture, Vector2f position, Vector2f scale, FontType font, String text) {
        super(texture, (Vector2f)position.normalise(), scale);
        
        this.font = font;
        this.text = text;
        this.position = position;
        this.scale = scale;
    }
    
    private static float normalize(float value, float min, float max) {
        float normalized = (value - min) / (max - min);
        return normalized;
    }
    
    public void checkMouse() {
        
    }
    
}





package guis;

import org.lwjgl.util.vector.Vector2f;

public class GuiTexture {
    
    private int texture;
    private Vector2f position;
    private Vector2f scale;
    
    public GuiTexture(int texture, Vector2f position, Vector2f scale) {
        this.texture = texture;
        this.position = position;
        this.scale = scale;
    }

    public int getTexture() {
        return texture;
    }

    public Vector2f getPosition() {
        return position;
    }

    public Vector2f getScale() {
        return scale;
    }
}






package guis;

import java.util.List;

import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL13;
import org.lwjgl.opengl.GL20;
import org.lwjgl.opengl.GL30;
import org.lwjgl.util.vector.Matrix4f;

import models.RawModel;
import renderEngine.Loader;
import toolbox.Maths;

public class GuiRenderer {
    
    private final RawModel quad;
    private GuiShader shader;
    
    public GuiRenderer(Loader loader) {
        float [] positions = {-1, 1, -1, -1, 1, 1, 1, -1};
        quad =loader.loadToVAO(positions);
        shader = new GuiShader();
    }
    
    public void render(List<GuiTexture> guis) {
        shader.start();
        GL30.glBindVertexArray(quad.getVaoID());
        GL20.glEnableVertexAttribArray(0);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        GL11.glDisable(GL11.GL_DEPTH_TEST);
        for(GuiTexture gui : guis) {
            GL13.glActiveTexture(GL13.GL_TEXTURE0);
            GL11.glBindTexture(GL11.GL_TEXTURE_2D, gui.getTexture());
            Matrix4f matrix = Maths.createTransformationMatrix(gui.getPosition(), gui.getScale());
            shader.loadTransformation(matrix);
            GL11.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, quad.getVertexCount());
        }
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        GL11.glDisable(GL11.GL_BLEND);
        GL20.glDisableVertexAttribArray(0);
        GL30.glBindVertexArray(0);
        shader.stop();
    }
    
    public void cleanUp() {
        shader.cleanUp();
    }
    
}
 

mihe7

Top Contributor
Wahrscheinlich hat ihm jemand am letzten starken Regentag eine unerwünschte Zeitung in den Briefkasten gestopft, die dann sämtliche darin befindliche Post inklusive des Schecks mit der Jahresgratifikation vollkommen durchweicht und unwiderbringlich zerstört hat.;)
Da spricht jemand aus Erfahrung - die Frage ist nur... auf welcher Seite des Briefkastens? :p

kann sein ich wars aber höchst warscheinlich nicht
Pfff... erst Wochenblatt austragen und dann alles abstreiten. Unfassbar.
 

coolian

Bekanntes Mitglied
Da spricht jemand aus Erfahrung - die Frage ist nur... auf welcher Seite des Briefkastens? :p


Pfff... erst Wochenblatt austragen und dann alles abstreiten. Unfassbar.
ich streite nicht ab das ich wochen blatt austrage oder so allerdings trage ich nicht in ganz deutschland aus also außer du wohnst in helmsdorf war ich es nicht
 

coolian

Bekanntes Mitglied
nach rum probieren und debuggen hab ich rausgefunden das wenn ich in scale als x koordinate 100 geb und dies dann normalisiere mit der funktion die in der vector klasse ist das x falsch ist nämlich ist x 0.8944272 aber da von wo das ausgeht ist der mittel punkt des bildschirms was heist das maximal 0,5 möglich ist ich muss also mal gucken ob ich meine eigene funktion nutzen kann
 

httpdigest

Top Contributor
Es ist unklar/ungenau, was du mit "einem Vektor zwischen -0.5 und 0.5" meinst.
Ein Skalar kann zwischen diesen beiden Werten sein, aber bei einem Vektor ist das mehrdeutig.
Meinst du damit jede einzelne Komponente dieses Vektors? Oder nur eine bestimmte Komponente? Oder meinst du damit die Länge (bzw. die euklid'sche Norm) dieses Vektors?
Wenn du nur eine Komponente meinst, die zwischen minimal -0.5 und maximal +0.5 sein kann und du möchtest diese Komponente von -0.5 auf -1.0 mappen und von +0.5 auf +1.0 (mit 0.0 -> 0.0), dann sieht die Rechnung denkbar einfach aus (7. Klasse Schule rationale Zahlen):
v' = v / 0.5
 

coolian

Bekanntes Mitglied
tut scale in matrix4f das objekt in alle richtungen größer machen oder nur in eine weil wenn eine dann ist 0,5 normalisieren nicht mehr richtig
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
temi OpenGL: Eine Kugel Spiele- und Multimedia-Programmierung 7
P Audio Visualizer mit OpenGL in Java? Spiele- und Multimedia-Programmierung 4
Z Vlcj in OpenGL Spiele- und Multimedia-Programmierung 4
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
K Messdaten in Echtzeit darstellen in OpenGL Spiele- und Multimedia-Programmierung 4
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
B LWJGL OpenGL SIGSEGV auf Linux (Verzweiflung :/) Spiele- und Multimedia-Programmierung 8
KeexZDeveoper Fehler von OpenGL Spiele- und Multimedia-Programmierung 1
Kim_Dotcom libGDX - opengl Fehler Spiele- und Multimedia-Programmierung 5
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
RalleYTN OpenGL Context im JFrame? Spiele- und Multimedia-Programmierung 0
L OpenGL TransformationMatrix eines Flugzeugs Spiele- und Multimedia-Programmierung 2
F OpenGL - Transparenz mit Depth Peeling Spiele- und Multimedia-Programmierung 0
turing OpenGL / Jogle Code Reveiw zur Performance Verbesserung Spiele- und Multimedia-Programmierung 1
K LibGdx, Loadingscreen & Opengl context Spiele- und Multimedia-Programmierung 3
turing OpenGL VBO and Unfiform Handling Spiele- und Multimedia-Programmierung 1
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
T opengl und Android.... Spiele- und Multimedia-Programmierung 3
D [OpenGL] Spiel in der Art von Age of Empires Spiele- und Multimedia-Programmierung 4
R LWJGL: OpenGL Fehler - weitere Informationen auslesen möglich? Spiele- und Multimedia-Programmierung 2
T Welche OpenGL-Version soll ich verwenden? Spiele- und Multimedia-Programmierung 2
O OpenGL - Texture falsch herum Spiele- und Multimedia-Programmierung 3
Gregorrr OpenGL & RCP/SWT Spiele- und Multimedia-Programmierung 3
P LWJGL oder OpenGL (C++) Spiele- und Multimedia-Programmierung 7
K Android: OpenGL render performance Tipps ? Spiele- und Multimedia-Programmierung 4
lumo opengl, sprites/tiles Spiele- und Multimedia-Programmierung 8
M OpenGL: Rectangle dort erstellen wo ich hintippe Spiele- und Multimedia-Programmierung 2
U OpenGl 1.1 (LWJGL GL11.*) und weiter? Spiele- und Multimedia-Programmierung 7
CookieSoft OpenGl Translatef Frage Spiele- und Multimedia-Programmierung 2
V Keine Ahnung von OpenGL! Hilfe wäre lieb! Spiele- und Multimedia-Programmierung 8
T 3D Stadtmodell mit OpenGL Spiele- und Multimedia-Programmierung 5
TheWhiteShadow OpenGL glDrawArrays Bufferfehler Spiele- und Multimedia-Programmierung 10
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
S OpenGL Textur unsauber Spiele- und Multimedia-Programmierung 2
T OpenGL ES verschwindene Vertices Spiele- und Multimedia-Programmierung 2
T Android OpenGL Bewegen Spiele- und Multimedia-Programmierung 5
R OpenGL Textur mit verschiedenen bit depths Spiele- und Multimedia-Programmierung 6
Helgon OpenGL Blend Frage Spiele- und Multimedia-Programmierung 18
A LWJGL/OpenGL und Text Spiele- und Multimedia-Programmierung 8
Helgon OpenGL vernünftige Tutorial? Spiele- und Multimedia-Programmierung 22
A OpenGL Textur und nicht Textur Spiele- und Multimedia-Programmierung 2
T Jmonkey opengl problem Spiele- und Multimedia-Programmierung 13
T Probleme mit Skysphere in Opengl Spiele- und Multimedia-Programmierung 4
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
F Suche Tutorial zu "purem" OpenGL mit Java Spiele- und Multimedia-Programmierung 10
Kr0e OpenGL + glSubTexImage2D -> Bufferproblem Spiele- und Multimedia-Programmierung 3
F OpenGL Screenshot in iMove (als Greenscreen) => Farben invertiert? Spiele- und Multimedia-Programmierung 16
I Vergleich von Java3D und OpenGL Spiele- und Multimedia-Programmierung 17
F Mac: OpenGL Desktop-Screen aus Grafikkarte lesen Spiele- und Multimedia-Programmierung 2
F OpenGL 2D MouseClick/MouseMove Listener Spiele- und Multimedia-Programmierung 4
Kr0e Sehr schnelle Texturupdates (OpenGL) Spiele- und Multimedia-Programmierung 3
Kr0e OpenGL beliebige Texturgröße Spiele- und Multimedia-Programmierung 2
BattleMaster246 OpenGL - Transparenz Spiele- und Multimedia-Programmierung 10
Kr0e OpenGL .. Pixel Buffer Objekt oder Frame Buffer Object? Spiele- und Multimedia-Programmierung 2
Y JOGL / OPENGL in Frame Spiele- und Multimedia-Programmierung 11
A Problem openGL-Pipeline mit Win7? Spiele- und Multimedia-Programmierung 6
G OpenGL boolesche operation auf Rechtecke Spiele- und Multimedia-Programmierung 15
A JOGL / OpenGL Spiele- und Multimedia-Programmierung 7
G API für 3d-Programmierung? OpenGL? Spiele- und Multimedia-Programmierung 12
J OpenGL (JOGL) - Radial Blur Effekt (Glow) Spiele- und Multimedia-Programmierung 2
J Opengl Texture laden Null Pointer Exception Spiele- und Multimedia-Programmierung 6
J netbeans opengl keyPressed(KeyEvent evt) benutzen Spiele- und Multimedia-Programmierung 4
J netbeans opengl gluPerspective und gluLookAt Verständnis Spiele- und Multimedia-Programmierung 13
S glTexSubImage2D()-Fragen(Zerstörbares Terrain, OpenGL) Spiele- und Multimedia-Programmierung 3
Z Suche Tutorial zum Einstieg in OpenGl mit Java (JOGL) Spiele- und Multimedia-Programmierung 2
T Overlay in anderer OpenGL Anwendung Spiele- und Multimedia-Programmierung 4
egrath Vista OpenGL Performance Problem? Spiele- und Multimedia-Programmierung 3
Y OpenGL Spiele- und Multimedia-Programmierung 5
J opengl beispiele? Spiele- und Multimedia-Programmierung 10
D Java mit OpenGL - besser LWJGL oder JOGL? Spiele- und Multimedia-Programmierung 6
N OpenGL und DirectX - was genau ist das? Spiele- und Multimedia-Programmierung 5
C OpenGl Support für Applet (sun.java2d.opengl=True) Spiele- und Multimedia-Programmierung 3
B OpenGL oder Direct X Spiele- und Multimedia-Programmierung 9
L Kollision soll nur an oberer Seite (Breite) möglich sein Spiele- und Multimedia-Programmierung 6
0x7F800000 Stroke breite absolut in px setzen? Spiele- und Multimedia-Programmierung 19
R Koordinaten, Breite, Höhe nach drehen berechnen? Spiele- und Multimedia-Programmierung 3
Y Höhe und Breite von Bildern? Spiele- und Multimedia-Programmierung 4
R Die korrekte Breite/Höhe eines Bildes wird nicht erkannt. Spiele- und Multimedia-Programmierung 2
G Breite eines Strings Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben