Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Schrompf hat geschrieben:std::strack<DeinFunktionszeiger> und fertig.
Eigentlich schon – ist aber leider eine innere Schleife und ich versuche, jedes Register zu sparen. std::stack, der in VC anscheinend als Double-Ended Queue implementiert ist, drückt die an Call Stack-Operationen beteiligte Datenmenge leider nicht gerade :/
Jörg hat geschrieben:...oder einen Dummy-Eintrag am Anfang deines Arrays 'opfern'.
Stimmt.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ups, Jammern vergessen:

http://connect.microsoft.com/VisualStud ... s-constant

http://connect.microsoft.com/VisualStud ... e-of-c4127

Sechs Jahre später immernoch nichts
Ist es denn so schwer, die Warnung für Template-Parameter abzuschalten

Damit gehe ich denen jetzt nochmal auf die Eier. Upvoatz, pl0x!
(Jaa, das Beispiel ist hanebüchen. Aber in zehn Zeilen was halbwegs Sinnvolles zusammenzuschustern ist garnicht so einfach.)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Aaaaaaaaaaah. Iiiiiiihhhhhh. Pfui Spinne.

Bild

Der neue Donnervogel. Blockieren Sie noch heute die Update-Funktion, bevor es zu spät ist.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
rüp
Establishment
Beiträge: 202
Registriert: 13.09.2010, 20:44

Re: Jammer-Thread

Beitrag von rüp »

Der neue Opera macht denselben Mist ... furchtbar!
Meine Lösung für das Problem wäre ja eigentlich, auf den Classic Windows Skin umzuschalten. Aber der ist in Windows 7 unmöglich geworden, weil dort mit Absicht(!) die Vorschaufunktion beim Verschieben von Icons deaktiviert wurde.
Visit my personal page, and follow the Rat King on Facebook & Twitter!
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Ein ganzes Jahr lang Baulärm, direkt nebenan. Unangenehm, aber auszuhalten. Bis diese Handwerker mit ihrem scheiß Radio kamen. Bei geschlossenem Fenster wird mein armes Hirn gekocht, bei geöffnetem Fenster wird es nun vom ewigen Dauergeplärre zu wertloser Matsche lysiert.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Mein Beileid. Die Pflege des eigenen Hirns darf man nicht dem Zufall überlassen!

Mein aktueller Jammer: Warum muss ich in Zeiten von C++0x immernoch Konstruktoren von Hand schreiben?

Code: Alles auswählen

struct Bla
{
  Vector a;
  std::string b;
  size_t c;
};

std::vector<Bla> some_vector;
some_vector.push_back( Bla( v, s, c)); // geht nicht, weil kein elementweiser Konstruktor definiert ist

Bla b = { v, s, c };
some_vector.push_back( b); // geht mit unnötiger Tipparbeit.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
glassbear
Establishment
Beiträge: 324
Registriert: 08.04.2003, 18:09
Alter Benutzername: Enrico_
Echter Name: Enrico
Wohnort: San Diego
Kontaktdaten:

Re: Jammer-Thread

Beitrag von glassbear »

CodingCat hat geschrieben:Ein ganzes Jahr lang Baulärm, direkt nebenan. Unangenehm, aber auszuhalten. Bis diese Handwerker mit ihrem scheiß Radio kamen. Bei geschlossenem Fenster wird mein armes Hirn gekocht, bei geöffnetem Fenster wird es nun vom ewigen Dauergeplärre zu wertloser Matsche lysiert.
Oropax + Lärmschutzkopfdinger! Hilft auch gegen dauertelefonierende Kollegen :lol:
Ein Hoch auf uns Männer... Auf die Frau, die uns HAT ( oder hat, und nicht weiß, dass sie uns hat ) ...auf die Idiotinnen ... besser gesagt VOLLPFOSTINNEN ... die uns hatten und uns verloren haben ... und auf die GLÜCKLICHEN, die das Vergnügen & Glück haben werden uns kennenzulernen!
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Jammer-Thread

Beitrag von Chromanoid »

Kriegt man von sowas nicht Pilze und ähnliches in den Ohren?
glassbear
Establishment
Beiträge: 324
Registriert: 08.04.2003, 18:09
Alter Benutzername: Enrico_
Echter Name: Enrico
Wohnort: San Diego
Kontaktdaten:

Re: Jammer-Thread

Beitrag von glassbear »

Chromanoid hat geschrieben:Kriegt man von sowas nicht Pilze und ähnliches in den Ohren?
Von sowas eher nicht, ich trag die ziemlich häufig hier im Großraumbüro. Von Oropax weiß ich nicht. Es gibt auch Noise Cancelation Kopfhörer, die kosten dann jedoch und ich finds zum Arbeiten eher ungeschickt.
Ein Hoch auf uns Männer... Auf die Frau, die uns HAT ( oder hat, und nicht weiß, dass sie uns hat ) ...auf die Idiotinnen ... besser gesagt VOLLPFOSTINNEN ... die uns hatten und uns verloren haben ... und auf die GLÜCKLICHEN, die das Vergnügen & Glück haben werden uns kennenzulernen!
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ein Index auf einen Index auf den Offset eines Strings mit dem Namen einer Datei, in welcher die Dateinamen der Dateien mit den Daten, die ich haben will, indiziert sind. Wie indirekt kann man es eigentlich noch machen …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Klingt, als würdest Du Collada laden wollen. PDFs sind aber gerüchterweise auch so. In jeden Fall aber sei Dir meines Mitleids versichert.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Nein, ein anders Format, absolute Nische.

Ich hasse, hasse, hasse, hasse, hasse Transparenz. Sie bedeutet immer einen Full Stop im Renderfluss. Sie bedeutet, dass man alles, was hinter dem Pixel liegt, auswerten muss, bevor man weitermachen darf. Sie ist ein Schmerz in dem Arsch. Egal ob per Alpha, Premultiplied Alpha oder Taschenrechner. Sie macht immer nur Probleme.
Okay, ich nehme alles zurück; ich war einfach geistig umnachtet. Premultiplied Alpha ist die beste Erfindung seit … irgendwas Supertollem. Sogar total nichtlineare Atmosphärenstreuung wird damit perfekt verarbeitet. Falls ihr das nicht versteht: Das bedeutet, dass ich jetzt Wolken rendern könnte, falls ich wollte. In erster Linie aber, dass ich die nächsten Nächte doch ein paar Stunden Schlaf kriegen werde.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Pics or it didn't happen!
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Hier ist eine hochauflösende Textur (mit durch additives Alpha-Blending emuliertem Color-Keying) über eine niedriger aufgelöste gelegt (auch die Straße ist so realisiert). An dem Blauton kannst du erkennen, dass das Atmosphärenvolumen auf alles wirkt:
ok.png
ok.png (62.88 KiB) 2568 mal betrachtet
Wenn man aber nicht strikt die Premultiplication einhält, kommt sowas raus:
notok.png
notok.png (70.67 KiB) 2568 mal betrachtet
Das war damals ein absolut tödliches Problem als ich versucht habe, Wolken zu implementieren. Ich musste dann bei jedem Wolkenpolygon (!) das Rendern unterbrechen, die Atmosphäre dahinter auflösen, und dann bis zur nächsten Verdeckung weiterrendern, damit die wieder nur bis zur vorherigen Verdeckung rechnet.

Keine Ahnung, warum ich das damals nicht lösen konnte. Vielleicht war mein Wissen um Alpha und Gamma einfach zu dünn; vielleicht haben mich auch andere Probleme (strikte Back-to-Front-Renderreihenfolge) zu sehr abgelenkt. Jetzt habe ich jedenfalls erkannt; es funktioniert und erscheint mir glasklar; und ich hätte schon fast wieder Lust auf Wolken (allerdings momentan zu viel zu tun.)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Danke! Ist zwar unpassend hier im Jammerthread, aber ich freu mich, wenn's bei Dir vorwärtsgeht und dabei auch noch Bilder zu sehen sind.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Top-OR
Establishment
Beiträge: 330
Registriert: 02.03.2011, 16:32
Echter Name: Jens H.
Wohnort: Esslingen/Dessau
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Top-OR »

Schrompf hat geschrieben:Danke! Ist zwar unpassend hier im Jammerthread, aber ich freu mich, wenn's bei Dir vorwärtsgeht und dabei auch noch Bilder zu sehen sind.
Geht mir ähnlich, aber du hättest ja sagen können, WIE TRAURIG du es findest, dass Krishty so schnell vorankommt und deinen UNGLAUBLICHEN NEID und MISSGUNST zum Asudruck bringen können.

Neneneneeeee, nichma richtig jammern ... ;-)
--
Verallgemeinerungen sind IMMER falsch.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Schrompf »

Ok, dann hier der nachgereichte Pflichtjammer: ich habe grade 4 Stunden investiert, um in Splatter die Spiellogik von der Spiel-Präsentation zu trennen. Es soll auch ein kleiner Editor zu Splatter entstehen, der natürlich auch die Spiellogik braucht, nicht aber Intro, Menü und den ganzen Scheiß. Und die waren derartig miteinander vermischt, dass ich mir hier die Finger wund getippt habe, um den ganzen Mist zu trennen. Man merkt halt doch, dass das Projekt damals nur ein Schnellschuss war.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Top-OR
Establishment
Beiträge: 330
Registriert: 02.03.2011, 16:32
Echter Name: Jens H.
Wohnort: Esslingen/Dessau
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Top-OR »

Na bitte, geht doch! ;-)

Da freu ich mich. Ich finds traurig, dass soviel gejammert wird.
--
Verallgemeinerungen sind IMMER falsch.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Ich habe mein derzeitiges Projekt als einzelne Übersetzungseinheit entwickelt (einzige .cpp ist die main.cpp) und die Komponenten auf Header aufgeteilt. Nun bin ich bei 5000 Zeilen angelangt und das Kompilieren … zieht sich. Also werde ich nun erstmal Deklarationen von Definitionen trennen und letztere dann auf mehrere Übersetzungseinheiten aufteilen müssen. Aber was soll’s, Zeit habe ich ja im Überfluss …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Code: Alles auswählen

// If not enough memory left in current pool, allocate a new pool
if (result + size > m_end) [...]
Aus den rapidxml-Sources. Grausiges Unheil schlummert überall!

Richtig wäre natürlich:

Code: Alles auswählen

// If not enough memory left in current pool, allocate a new pool
if (size > static_cast<size_type>(m_end - result)) [...]
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Vorhin vergessen:
Schrompf hat geschrieben:Ist zwar unpassend hier im Jammerthread, aber ich freu mich, wenn's bei Dir vorwärtsgeht und dabei auch noch Bilder zu sehen sind.
Kann ich eigentlich nur zurückgeben, wenn auch auf den Showroom-Thread bezogen.

@CodingCat: Falls result ein Zeiger auf die Position des Ergebnisses wäre, würdest du da mit Zeigerarithmetik ohne Cast sauber durchkommen. Also if(ptrToNewBeginning + length > m_End).

Frage nebenbei: Ist die Konvertierung von signed zu unsigned eigentlich wohldefiniert?

Es geht darum, dass ich an einigen Stellen size_t elementsIndex = ptrToElement - ptrToBeginning; ausrechne. Die Subtraktion hat als Ergebnis was vom Typ ptrdiff_t, der signed ist. size_t hat dieselbe Größe, allerdings unsigned. Falls die Konvertierung nicht wohldefiniert ist, muss ich diese Arrays ja auf max(size_t) / 2 begrenzen …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

§4.7.2 hat geschrieben:If the destination type is unsigned, the resulting value is the least unsigned integer congruent to the source
integer (modulo 2n where n is the number of bits used to represent the unsigned type). [ Note: In a two’s
complement representation, this conversion is conceptual and there is no change in the bit pattern (if there
is no truncation). —end note ]
Also ja. :)
Krishty hat geschrieben:@CodingCat: Falls result ein Zeiger auf die Position des Ergebnisses wäre, würdest du da mit Zeigerarithmetik ohne Cast sauber durchkommen. Also if(ptrToNewBeginning + length > m_End).
Es geht darum, ob der Platz für das Ergebnis reicht, m_end ist das Ende des gültigen Speicherbereichs. Also kann ich da ganz problemlos an die Grenze des Adressbereichs stoßen, deshalb geht das mit der Zeigerarithmetik nicht sauber.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

§4.7.2 hat geschrieben:If the destination type is unsigned, the resulting value is the least unsigned integer congruent to the source integer
Hm. Sicher? Für mich klingt das, als wäre 0 die nächste vorzeichenlose Zahl, die rauskommt, falls das Original negativ war … und Two's Complement wird im Standard auch nirgends vorgeschrieben.
CodingCat hat geschrieben:Es geht darum, ob der Platz für das Ergebnis reicht, m_end ist das Ende des gültigen Speicherbereichs. Also kann ich da ganz problemlos an die Grenze des Adressbereichs stoßen, deshalb geht das mit der Zeigerarithmetik nicht sauber.
Aua, so tappe ich in meine eigenen Fallen. Ist einfach noch viel zu früh am Morgen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Jammer-Thread

Beitrag von CodingCat »

Krishty hat geschrieben:Hm. Sicher? Für mich klingt das, als wäre 0 die nächste vorzeichenlose Zahl, die rauskommt, falls das Original negativ war … und Two's Complement wird im Standard auch nirgends vorgeschrieben.
Kongruenz setzt sich auch im negativen Bereich fort. Kurz zusammengefasst heißt der Paragraph eigentlich nur, dass das Ergebnis per Gesetz immer dem des unveränderten Two's Complement entspricht, egal wie die interne Repräsentation gewählt ist.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Danke. Ich hatte nur das Wort übersetzt und nicht bedacht, dass das ein Theorem sein könnte m[
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

Delegating Constructors sind eine Scheißidee und verletzen Kapselung. Klassen sollen keine Methoden enthalten, die nur auf andere öffentliche Methoden zugreifen, weil das bedeutet, dass man sie auch als Funktionen realisieren und dadurch von objektinterner Logik trennen könnte. Die Probleme, wegen denen Delegating C’tors eingeführt wurden, hätten stattdessen durch Placement-Syntax für Funktionen gelöst werden müssen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

static_assert(__is_pod(int), "FFFFFFF"
                             "FFFFFFF"
                              "FFFFFF"
                               "FFFUU"
                               "UUUU"
                                "UUUU"
                               "UUUU"
                                "UUUU"
                               "UUUU-"
);


Und meinen C4127-Vorschlag hat MS ohne Kommentar als „by Design“ geschlossen. Na, sicher haben sie es sich zumindest auf ihrem unsichtbaren Notizblock aufgeschrieben! Je mehr wertvolles Feedback ich abgebe, desto blöder komme ich mir vor.
Bild
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Jammer-Thread

Beitrag von eXile »

Für alle, die Krishty eloquenten Beitrag nicht direkt verstanden haben:
http://msdn.microsoft.com/en-us/library/ms177194.aspx hat geschrieben:__is_pod will return false on fundamental types.
Retter in der Not?
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

eXile hat geschrieben:Retter in der Not?
Nein, nur ein weiteres Übel. Ich will das nicht #includen. Dann habe ich wieder die halbe Standardbibliothek drin. Jetzt lasse ich es eh weg; sollte nur eine Warnung im Fall des Falles (nicht-POD aus Datei lesen) sein.

————

Ruft ReadFile() nie in einer inneren Schleife auf. Klar, das ist ein Grundsatz, und den kenne und befolge ich auch; ich bin ja nicht töricht. Aber da war dieser Prototyp, der hingehackt werden musste. Und ich wollte es lesbar halten bis das Proof of Concept steht … langer Rede kurzer Sinn:
Bild
Datei vor der Schleife puffern reduzierte die Ladezeit von 52 s auf sieben. Das kommt davon, wenn man durch Memory Mapped Files verwöhnt ist.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Jammer-Thread

Beitrag von Krishty »

  • Warum unterstützt kaum ein Compiler export template
  • for the love of God
  • why
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten