File: webgl2_get_buffer_sub_data.cpp

package info (click to toggle)
emscripten 3.1.6~dfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 114,112 kB
  • sloc: ansic: 583,052; cpp: 391,943; javascript: 79,361; python: 54,180; sh: 49,997; pascal: 4,658; makefile: 3,426; asm: 2,191; lisp: 1,869; ruby: 488; cs: 142
file content (41 lines) | stat: -rw-r--r-- 1,149 bytes parent folder | download
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
#include <GLES3/gl3.h>
#include <webgl/webgl2.h>
#include <emscripten/html5_webgl.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>

int main()
{
  EmscriptenWebGLContextAttributes attr;
  emscripten_webgl_init_context_attributes(&attr);
  attr.majorVersion = 2;
  EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_create_context("#canvas", &attr);
  emscripten_webgl_make_context_current(ctx);

  GLuint buffer;
  glGenBuffers(1, &buffer);
  glBindBuffer(GL_ARRAY_BUFFER, buffer);
  const uint8_t data[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
  glGenBuffers(1, &buffer);
  glBindBuffer(GL_ARRAY_BUFFER, buffer);
  glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);

  uint8_t data2[8] = {};

  // Test full buffer read
  glGetBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(data), data2);
  assert(!memcmp(data, data2, sizeof(data)));

  // Test partial buffer read
  memset(data2, 0, 8);
  glGetBufferSubData(GL_ARRAY_BUFFER, 3, 4, data2 + 3);
  assert(!memcmp(data + 3, data2 + 3, 4));
  assert(data2[0] == 0);
  assert(data2[1] == 0);
  assert(data2[2] == 0);
  assert(data2[7] == 0);

  printf("Test passed!\n");
  return 0;
}