質問編集履歴

1

始めに投稿したコードはやっていることが支離滅裂だったので書き直しました。ですが.csoバイナリシェーダーオブジェクトファイル読み込めていないようです。

2020/05/05 12:50

投稿

Sebastian4328
Sebastian4328

スコア4

test CHANGED
File without changes
test CHANGED
@@ -8,19 +8,17 @@
8
8
 
9
9
 
10
10
 
11
+ //char outfile[] = "VertexShader.cso";
12
+
11
13
  HRESULT result;
12
14
 
13
- fstream file;
15
+
14
16
 
15
- char buf[16];
17
+ std::ifstream ifs("VertexShader.cso", std::ios::binary);
16
18
 
19
+ if (!ifs)
17
20
 
18
-
19
- file.open("VertexShader.cso", ios::in | ios::binary);
20
-
21
- if (!file.is_open()) {
21
+ {
22
-
23
- cout << "file open error" << endl;
24
22
 
25
23
  result = E_FAIL;
26
24
 
@@ -30,35 +28,31 @@
30
28
 
31
29
 
32
30
 
33
- while (!file.eof()) {
31
+ ifs.seekg(0, std::ios::end);
34
32
 
33
+ size_t size = ifs.tellg();
34
+
35
+ CHAR* buffer = new CHAR[size];
36
+
35
- file.read(buf, sizeof(buf));
37
+ ifs.read(buffer, size);
38
+
39
+ ifs.close();
36
40
 
37
41
 
38
42
 
39
- for (int i = 0, size = file.gcount(); i < size; i++) {
40
-
41
- cout << buf[i] << flush;
42
-
43
- }
44
-
45
- }
46
-
47
-
48
-
49
- file.close();
50
-
51
-
52
-
53
- result = device->CreateVertexShader(&buf, sizeof(buf), NULL, &resVS);
43
+ result = device->CreateVertexShader(&buffer, sizeof(buffer), NULL, &resVS);
54
44
 
55
45
  if (FAILED(result))
56
46
 
57
47
  {
58
48
 
49
+ delete buffer;
50
+
59
51
  return result;
60
52
 
61
53
  }
54
+
55
+ delete buffer;
62
56
 
63
57
 
64
58