Skip to content

Commit e307939

Browse files
committed
Initial port to GLESv2 with ANGLE
1 parent 7edabe2 commit e307939

8 files changed

Lines changed: 245 additions & 203 deletions

File tree

SimpleGraphic.vcxproj

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,18 +112,19 @@
112112
<PrecompiledHeader>NotUsing</PrecompiledHeader>
113113
<PrecompiledHeaderFile>
114114
</PrecompiledHeaderFile>
115-
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)vcpkg\installed\x86-windows-static\include;%(AdditionalLibraryDirectories)LuaJIT/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
115+
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)vcpkg\installed\x86-windows\include;%(AdditionalLibraryDirectories)LuaJIT/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
116116
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
117117
<ExceptionHandling>Async</ExceptionHandling>
118118
<LanguageStandard>stdcpp17</LanguageStandard>
119119
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
120+
<MultiProcessorCompilation>true</MultiProcessorCompilation>
120121
</ClCompile>
121122
<Link>
122123
<SubSystem>Windows</SubSystem>
123124
<GenerateDebugInformation>true</GenerateDebugInformation>
124125
<EnableUAC>false</EnableUAC>
125-
<AdditionalLibraryDirectories>$(SolutionDir)vcpkg\installed\x86-windows-static\lib;$(SolutionDir)vcpkg\installed\x86-windows-static\debug\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
126-
<AdditionalDependencies>gif.lib;jpeg.lib;lzma.lib;libpng16.lib;lua51.lib;zlib.lib;opengl32.lib;winmm.lib;glfw3.lib;fmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
126+
<AdditionalLibraryDirectories>$(SolutionDir)vcpkg\installed\x86-windows\lib;$(SolutionDir)vcpkg\installed\x86-windows\debug\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
127+
<AdditionalDependencies>d3d11.lib;d3d9.lib;dxgi.lib;dxguid.lib;libANGLE.lib;libGLESv2.lib;lzma.lib;lua51.lib;zlib.lib;opengl32.lib;winmm.lib;glfw3dll.lib;fmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
127128
</Link>
128129
</ItemDefinitionGroup>
129130
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -138,6 +139,7 @@
138139
<PrecompiledHeaderFile>
139140
</PrecompiledHeaderFile>
140141
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)vcpkg\installed\x86-windows-static\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
142+
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)vcpkg\installed\x86-windows\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
141143
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
142144
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
143145
<ExceptionHandling>Async</ExceptionHandling>
@@ -149,8 +151,8 @@
149151
<OptimizeReferences>true</OptimizeReferences>
150152
<GenerateDebugInformation>true</GenerateDebugInformation>
151153
<EnableUAC>false</EnableUAC>
152-
<AdditionalLibraryDirectories>$(SolutionDir)vcpkg\installed\x86-windows-static\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
153-
<AdditionalDependencies>gif.lib;jpeg.lib;lzma.lib;libpng16.lib;lua51.lib;zlib.lib;opengl32.lib;winmm.lib;glfw3.lib;fmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
154+
<AdditionalLibraryDirectories>$(SolutionDir)vcpkg\installed\x86-windows\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
155+
<AdditionalDependencies>d3d11.lib;d3d9.lib;dxgi.lib;dxguid.lib;libANGLE.lib;libGLESv2.lib;lzma.lib;lua51.lib;zlib.lib;opengl32.lib;winmm.lib;glfw3dll.lib;fmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
154156
</Link>
155157
</ItemDefinitionGroup>
156158
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

engine/core/core_image.cpp

Lines changed: 11 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ bool targa_c::Load(const char* fileName)
154154
// Try to match image type
155155
int ittable[3][3] = {
156156
3, 8, IMGTYPE_GRAY,
157-
2, 24, IMGTYPE_BGR,
158-
2, 32, IMGTYPE_BGRA
157+
2, 24, IMGTYPE_RGB,
158+
2, 32, IMGTYPE_RGBA
159159
};
160160
int it_m;
161161
for (it_m = 0; it_m < 3; it_m++) {
@@ -209,117 +209,20 @@ bool targa_c::Load(const char* fileName)
209209
}
210210
}
211211

212+
// Byteswap BGR(A) to RGB(A)
213+
if (comp == 3 || comp == 4) {
214+
uint8_t* p = dat;
215+
for (size_t i = 0; i < width * height; ++i, p += comp) {
216+
std::swap(p[0], p[2]);
217+
}
218+
}
219+
212220
return false;
213221
}
214222

215223
bool targa_c::Save(const char* fileName)
216224
{
217-
// Find a suitable image type
218-
int ittable[3][3] = {
219-
1, IMGTYPE_GRAY, 3,
220-
3, IMGTYPE_BGR, 2,
221-
4, IMGTYPE_BGRA, 2
222-
};
223-
int it_m;
224-
for (it_m = 0; it_m < 3; it_m++) {
225-
if (ittable[it_m][0] == comp && ittable[it_m][1] == type) break;
226-
}
227-
if (it_m == 3) {
228-
// Image type not supported
229-
return true;
230-
}
231-
232-
// Open the file
233-
fileOutputStream_c out;
234-
if (out.FileOpen(fileName, true)) {
235-
return true;
236-
}
237-
238-
// Write header
239-
tgaHeader_s hdr;
240-
memset(&hdr, 0, sizeof(hdr));
241-
hdr.width = width;
242-
hdr.height = height;
243-
hdr.depth = comp << 3;
244-
hdr.imgType = ittable[it_m][2] + rle * 8;
245-
out.TWrite(hdr);
246-
247-
// Write image
248-
dword rowSize = width * comp;
249-
if (rle) {
250-
byte* packet = new byte[comp * 128 + 4];
251-
dword mask = 0xFFFFFFFF >> ((4 - comp) << 3);
252-
for (int y = height - 1; y >= 0; y--) {
253-
byte* p = dat + y * rowSize;
254-
byte hdr = 255;
255-
dword lastPix;
256-
memOutputStream_c line(512);
257-
for (dword x = 0; x < width; x++, p+= comp) {
258-
dword pix = *(dword*)p & mask;
259-
if (hdr == 255) {
260-
// Start new packet
261-
*(dword*)packet = pix;
262-
hdr = 0;
263-
} else if (hdr & 0x80) {
264-
// Run-length packet, check for continuance
265-
if (pix == lastPix) {
266-
hdr++;
267-
if (hdr == 255) {
268-
// Max length, write it
269-
line.TWrite(hdr);
270-
line.Write(packet, comp);
271-
}
272-
} else {
273-
line.TWrite(hdr);
274-
line.Write(packet, comp);
275-
*(dword*)packet = pix;
276-
hdr = 0;
277-
}
278-
} else if (hdr) {
279-
// Raw packet, check if a run-length packet could be created with the last pixel
280-
if (pix == lastPix) {
281-
hdr--;
282-
line.TWrite(hdr);
283-
line.Write(packet, comp * (hdr + 1));
284-
*(dword*)packet = pix;
285-
hdr = 129;
286-
} else if (hdr == 127) {
287-
// Packet is already full, write it
288-
line.TWrite(hdr);
289-
line.Write(packet, comp * (hdr + 1));
290-
*(dword*)packet = pix;
291-
hdr = 0;
292-
} else {
293-
hdr++;
294-
*(dword*)(packet + comp * hdr) = pix;
295-
}
296-
} else {
297-
// New packet, check if this could become a run-length packet
298-
if (pix == lastPix) {
299-
hdr = 129;
300-
} else {
301-
hdr = 1;
302-
*(dword*)(packet + comp) = pix;
303-
}
304-
}
305-
lastPix = pix;
306-
}
307-
if (hdr < 255) {
308-
// Leftover packet, write it
309-
line.TWrite(hdr);
310-
line.Write(packet, hdr & 0x80? comp : comp * (hdr + 1));
311-
}
312-
line.MemOutput(&out);
313-
}
314-
delete[] packet;
315-
} else {
316-
// Raw
317-
for (int y = height - 1; y >= 0; y--) {
318-
out.Write(dat + y * rowSize, rowSize);
319-
}
320-
}
321-
322-
return false;
225+
return true;
323226
}
324227

325228
bool targa_c::ImageInfo(const char* fileName, imageInfo_s* info)

engine/core/core_image.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ enum imageType_s {
1414
IMGTYPE_GRAY = 0x11,
1515
IMGTYPE_RGB = 0x23,
1616
IMGTYPE_RGBA = 0x34,
17-
IMGTYPE_BGR = 0x43,
18-
IMGTYPE_BGRA = 0x54,
1917
IMGTYPE_RGB_DXT1 = 0x63,
2018
IMGTYPE_RGBA_DXT1 = 0x74,
2119
IMGTYPE_RGBA_DXT3 = 0x84,

engine/render/r_local.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515
#define APIENTRY
1616
#endif
1717
#define GL_GLEXT_LEGACY
18-
#include <OpenGL/gl.h>
19-
#include <GL/glext.h>
18+
#include <GLES2/gl2.h>
19+
#include <GLES2/gl2ext.h>
2020
#elif __linux__
21-
#include <GL/gl.h>
22-
#include <GL/glext.h>
21+
#include <GLES2/gl2.h>
22+
#include <GLES2/gl2ext.h>
2323
#else
2424
#define WINGDIAPI
2525
#define APIENTRY __stdcall
26-
#include <GL/gl.h>
27-
#include <GL/glext.h>
26+
#include <GLES2/gl2.h>
27+
#include <GLES2/gl2ext.h>
2828
#endif
2929

3030
#include "core/core_image.h"

0 commit comments

Comments
 (0)