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)