Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

  • »David Scherfgen« ist der Autor dieses Themas

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

1

18.06.2004, 10:14

Syntax-Highlighting-Test:

Was diesem Forum seit langem fehlte, ist die Möglichkeit, seine C++-Codes farblich schön hervorheben zu lassen, wie man das aus Visual C++ oder anderen Umgebungen kennt.
Heute "morgen" habe ich mich mal an die Arbeit gemacht, und das ist dabei rausgekommen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <windows.h>
#pragma once

// abstrakte Objektklasse

class RTRTObject
{
public:
    RTRTObject()
    {
        for(int i = 0; i < 256; i++) p_blockerCache[i] = 0;
    }

    virtual ~RTRTObject() {};

    /* Dies ist ein Kommentar im alten C-Stil. */
    static char* getName() {return "Und dies ist ein String!";}

    D3DXMATRIX matrix;
    D3DXMATRIX invMatrix;
    D3DXCOLOR color;
    float reflectiveness;
    RTRTObject* p_blockerCache[256];

    virtual bool hitByRay(const RTRTRay& ray, RTRTHitInfo& hitInfo) = 0;
    virtual void getHitInfo(RTRTHitInfo& hitInfo) = 0;
    virtual bool selfReflection() const = 0;

    bool inShadow(const D3DXVECTOR3& pos,
                  const D3DXVECTOR3& dir,
                  int lightID)
    {
        rtrtNumLightRays++;

        const float dirLength = D3DXVec3Length(&dir);
        RTRTRay ray;
        ray.start = pos;
        ray.dir = dir / dirLength;

        RTRTHitInfo hitInfo;
        hitInfo.flags = HI_RAYVALUE;

        if(p_blockerCache[lightID])
            if(p_blockerCache[lightID]->hitByRay(ray, hitInfo)) {rtrtCacheHits++; return true;}

        RTRTObject* p_exclude = p_blockerCache[lightID];
        for(unsigned int i = 0; i < rtrtObjects.size(); i++)
        {
            RTRTObject* p_object = rtrtObjects[i];
            if(p_object == this || p_object == p_exclude) continue;

            if(p_object->hitByRay(ray, hitInfo))
            {
                if(hitInfo.rayValue >= 0.0f && hitInfo.rayValue <= dirLength)
                {
                    p_blockerCache[lightID] = hitInfo.p_object;
                    rtrtCacheMisses++;
                    return true;
                }
            }
        }

        p_blockerCache[lightID] = 0;
        return false;
    }

    D3DXVECTOR3 getPosition() const {return D3DXVECTOR3(matrix._41, matrix._42, matrix._43);}
};


Der Button für diesen Code-Tag fehlt noch.
Der C++-Tag heißt [cpp].

Bitte testet was das Zeug hält!
Es gibt sicher noch Fehler oder Schlüsselwörter, die ich nicht berücksichtigt habe.

Bislang werden folgende Dinge farbig hervorgehoben:
- Präprozessordirektiven
- C++-Schlüsselwörter
- Kommentare
- Strings
- Zahlen (normale, Hex-Zahlen und Kommazahlen)

SM3D

Frischling

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

2

18.06.2004, 15:38

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Einfach eine geniale Sache von David

//  :huhu:  THX David


/* Test */
/*
==================
CheatsOk
==================
*/
qboolean    CheatsOk( gentity_t *ent ) {
    if ( !g_cheats.integer ) {
        trap_SendServerCommand( ent-g_entities, va("print \"Cheats are not enabled on this server.\n\""));
        return qfalse;
    }
    if ( ent->health <= 0 ) {
        trap_SendServerCommand( ent-g_entities, va("print \"You must be alive to use this command.\n\""));
        return qfalse;
    }
    return qtrue;
}


EDIT:
SYNTAX TEST

C-/C++-Quelltext

1
2
3
4
5
/*
==================
CheatsOk
==================
*/


FRAGE
Funktioniert immer nur ein [cpp] ?

hier der Code des letzten Eintrages :

SYNTAX TEST
[ cpp]
/*
==================
CheatsOk
==================
*/
[ /cpp]

Die erste Freistelle in [cpp] ist absicht um den Text darzustellen
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

David Scherfgen

Administrator

  • »David Scherfgen« ist der Autor dieses Themas

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

18.06.2004, 15:57

Fehler behoben!
(Kommentare über mehrere Zeilen gingen nicht)

SM3D

Frischling

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

4

18.06.2004, 16:01

Cool !!! :)

Ist ASM auch enthalten ?
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

SM3D

Frischling

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

5

18.06.2004, 16:04

ASM Test

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
asm
        {
            vs_1_1              // Version number


            m4x4 oPos, v0, c4   // Transform point to projection space

            
            dp3  r0,v3,-c16     // Dot product against untransformed light

                        
            mul  r0,r0,c13      // Modulate against diffuse light color

            mul  r0,r0,c9       // Modulate against diffuse material

            
            mov oD0,r0          // Put into diffuse color output

        };


JUHU voll COOL David
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

David Scherfgen

Administrator

  • »David Scherfgen« ist der Autor dieses Themas

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

18.06.2004, 16:07

Naja, was ist da so cool? *g*
Es ist doch nur dieses eine Schlüsselwort "asm".
Ich habe nicht vor, alle möglichen mnemonischen Codes einzubauen ;)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

18.06.2004, 16:08

@SM3D hmm für was ist diese asm abschnitt gut?(hat ja was mit dot3 beleuchtung zu tun....)

David Scherfgen

Administrator

  • »David Scherfgen« ist der Autor dieses Themas

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

18.06.2004, 16:13

Das ist gar keine normaler Assembler, das ist die Vertex-Shader-Assemblersprache... die könnte man auch nicht in ein C++-Programm schreiben.

SM3D

Frischling

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

9

18.06.2004, 16:16

@David,
jep das habe ich auch gemerkt. *g*

@nox,
habe den Codeabschnitt aus der Onlinehilfe (DXSDK), Exercise 2, Vertex Shader Diffuse Lighting.
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

SM3D

Frischling

Beiträge: 50

Wohnort: Lübeck, Germany

  • Private Nachricht senden

10

18.06.2004, 16:25

Inline-Assembler(x86) in C/C++

Beispiel für 8bit-Variablen:

C-/C++-Quelltext

1
2
3
4
5
6
7
char var1 = 3, var2 = 4;
_asm
{
    mov  al,var1
    xchg al,var2
    mov  var1,al
}


Beispiel für 16bit-Variablen:

C-/C++-Quelltext

1
2
3
4
5
6
7
unsigned short var1 = 3, var2 = 4;
_asm
{
    mov  ax,var1
    xchg ax,var2
    mov  var1,ax
}


Beispiel für 32bit-Variablen:

C-/C++-Quelltext

1
2
3
4
5
6
7
int var1 = 3, var2 = 4;
_asm
{
    mov  eax,var1
    xchg eax,var2
    mov  var1,eax
}
Created by SM3D
[Game Development]


WERBUNG für ein gutes Projekt
http://www.your-dreamland.de/pics/bannerunder.jpg

Werbeanzeige