36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								#include <cstdint>
							 | 
						||
| 
								 | 
							
								#include <tuple>
							 | 
						||
| 
								 | 
							
								#include <iostream>
							 | 
						||
| 
								 | 
							
								#include "vertex.h"
							 | 
						||
| 
								 | 
							
								#include "parray.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//方案一,使用静态变量存储数据
							 | 
						||
| 
								 | 
							
								//方案二,模板元编程,传递数据
							 | 
						||
| 
								 | 
							
								int main() {
							 | 
						||
| 
								 | 
							
									cout << "std::is_aggregate_v<PosVertex> = "<< is_aggregate_v<PosVertex> << endl;
							 | 
						||
| 
								 | 
							
									cout << "std::is_aggregate_v<TexVertex> = "<< is_aggregate_v<TexVertex> << endl;
							 | 
						||
| 
								 | 
							
									cout << "std::is_aggregate_v<BoneVertex> = "<< is_aggregate_v<BoneVertex> << endl;
							 | 
						||
| 
								 | 
							
									float x1 = 1.0, x2 = 2.0, x3 = 3.0;
							 | 
						||
| 
								 | 
							
									PosVertex p;
							 | 
						||
| 
								 | 
							
									TexVertex t;
							 | 
						||
| 
								 | 
							
									BoneVertex b;
							 | 
						||
| 
								 | 
							
									ptarray<Vertex, PosVertex> vertices(10);
							 | 
						||
| 
								 | 
							
									//ptarray<Vertex, TexVertex> vertices2(10);
							 | 
						||
| 
								 | 
							
									vertices.push_back(p);
							 | 
						||
| 
								 | 
							
									parray<Vertex> pv = vertices;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									auto Position = make_tuple(1, 2, 3);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									auto pv0 = *(PosVertex*)pv.at(0);
							 | 
						||
| 
								 | 
							
									//vertices.push_back(t);
							 | 
						||
| 
								 | 
							
									cout<< "sizeof " << sizeof(p) << "," << sizeof(t) << "," << sizeof(b)<<"\n";
							 | 
						||
| 
								 | 
							
									//auto r1 = b.BindLayout();
							 | 
						||
| 
								 | 
							
									//auto r2 = t.BindLayout();
							 | 
						||
| 
								 | 
							
									//auto r3 = p.BindLayout();
							 | 
						||
| 
								 | 
							
									//cout << "vector " << get<0>(r1[0]) << "," << get<0>(r2[0]) << "," << get<0>(r3[0]) << "\n";
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |